2013-01-18 25 views
22

मेरे पास एक स्वयं Mojo वर्ग है।मैवेन को मेरा कस्टम मोजो क्यों नहीं मिल सकता है?

@Mojo(name="mojo", threadSafe=true) 
public class MyMojo extends AbstractMojo 
{ 
    @Component 
    private MavenProject project; 

    public void execute() throws MojoExecutionException, MojoFailureException 
    { 
     getLog().info("Execute"); 
    } 
    } 

उसके बाद मैं स्थानीय भंडार में इसे स्थापित।

[INFO] Applying mojo extractor for language: java-annotations 
[INFO] Mojo extractor for language: java-annotations found 0 mojo descriptors. 
[INFO] Applying mojo extractor for language: java 
[INFO] Mojo extractor for language: java found 0 mojo descriptors. 
[INFO] Applying mojo extractor for language: bsh 
[INFO] Mojo extractor for language: bsh found 0 mojo descriptors. 
.... 
[INFO] BUILD SUCCESS 

लेकिन जब कोशिश 'मोजो' लक्ष्य फोन करने के लिए मैं

[ERROR] Could not find goal 'mojo' in plugin my.plugins:my-plugin:1.0-SNAPSHOT among available goals -> [Help 1] 

what is the problem? 

एन त्रुटि

मिला यहाँ Maven-प्लगइन-प्लगइन विन्यास है।

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-plugin-plugin</artifactId> 
    <version>3.2</version> 
    <configuration>             
     <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound> 
    </configuration> 
</plugin> 

जावाडोक एनोटेशन के साथ पुरानी तंत्र अच्छी तरह से काम करता है, लेकिन मैं जावा एनोटेशन का उपयोग करना चाहता हूं।

<dependency> 
    <groupId>org.apache.maven.plugin-tools</groupId> 
    <artifactId>maven-plugin-annotations</artifactId> 
    <version>3.2</version> 
</dependency> 


[INFO] --- maven-plugin-plugin:3.2:descriptor (default-descriptor) @ bla-mvn-plugin 

मोजो-डिस्क्रिप्टर के बजाय डिफ़ॉल्ट-डिस्क्रिप्टर सक्षम क्यों है?

+2

क्या आप मेम-प्लगइन-प्लगइन कॉन्फ़िगरेशन को दिखा सकते हैं जो आप पोम में उपयोग कर रहे हैं? –

+0

यह मदद नहीं करता है। –

+0

मुझे मैवेन-निर्भरता-प्लगइन ट्रीमोजो से भी मेरी परियोजना में कॉपी किया गया है, सभी घटकों को हटा दें और मैवेन को यह मोजो नहीं मिला। –

उत्तर

31

अपने प्लगइन के पोम के लिए इस अनुभाग जोड़ें:

<build> 
    <pluginManagement> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-plugin-plugin</artifactId> 
       <version>3.2</version> 
       <configuration> 
        <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound> 
       </configuration> 
       <executions> 
        <execution> 
         <id>mojo-descriptor</id> 
         <phase>process-classes</phase> 
         <goals> 
          <goal>descriptor</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
</build> 

पी एस। मेवेन-कंपाइलर-प्लगइन देखें: टिप्पणियों के साथ एमओजेओ बनाने के पूर्ण कामकाजी उदाहरण के लिए 3.0 स्रोत

+3

किसी और को एक नोट जो मेरे जैसा ही समस्या थी: जावा 5 एनोटेशन के लिए निकालने वाला 'जावा-एनोटेशन' है, न कि 'जावा', (जिसका उत्तरार्द्ध केवल पुराने डॉकलेट-शैली जावाडोक एनोटेशन को लक्षित करता है)। – Ajax

+0

मुझे v '3 का उपयोग करना पड़ा।5', लेकिन मुझे लगता है कि ऐसा इसलिए है क्योंकि मैं हाल ही की निर्भरताओं का उपयोग कर रहा हूं। –

5

संपादित करें (मोजो एनोटेशन के उपयोग को संबोधित):

मैं एनोटेशन के साथ एक प्लगइन का निर्माण करने की कोशिश की है और एक ही मुद्दे में भाग गया।

मोजो

@Mojo(name = "hello", defaultPhase = LifecyclePhase.INSTALL) 
public class MyMojo extends AbstractMojo 
{ 
    public void execute() throws MojoExecutionException, MojoFailureException 
    { 
     getLog().info("Hello"); 
    } 
} 

मोजो पोम

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>testware.mojotest</groupId> 
    <artifactId>mojotest</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>mojotest</name> 
    <packaging>maven-plugin</packaging> 

    <dependencies> 
     <dependency> 
      <groupId>org.apache.maven</groupId> 
      <artifactId>maven-plugin-api</artifactId> 
      <version>2.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.maven.plugin-tools</groupId> 
      <artifactId>maven-plugin-annotations</artifactId> 
      <version>3.2</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-plugin-plugin</artifactId> 
       <version>3.2</version> 
       <configuration> 
        <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

परियोजना लागू की पोम: के रूप में @Mojo एनोटेशन में नीचे दिखाया गया है मैं एक डिफ़ॉल्ट जीवन चक्र चरण के लिए प्लगइन जुड़ कर इसे हल मोजो

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>testware.mojotest</groupId> 
    <artifactId>mojotest-runner</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>mojotest-runner</name> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>testware.mojotest</groupId> 
       <artifactId>mojotest</artifactId> 
       <version>0.0.1-SNAPSHOT</version> 
       <executions> 
        <execution> 
         <phase>compile</phase> 
         <goals> 
          <goal>hello</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
+0

वह पुराने जावा 5 एनोटेशन के आधार पर नए जावा 5 एनोटेशन आधारित तरीके का उपयोग कर रहा है, जो पुराने कोडवाड आधारित तरीके से आपके कोड उदाहरण –

+0

@ स्टीफन देता है - धन्यवाद, मैंने पहले कभी इसका उपयोग नहीं किया है और पुराने तरीके से हमेशा काम करना प्रतीत होता था। मुझे उन्हें देखना होगा। – gregwhitaker

+0

आप ऐसे पुराने मेवेन-प्लगइन-एपीआई संस्करण का उपयोग क्यों कर रहे हैं? – khmarbaise