2013-03-13 105 views
3

我想開發一個定製的Maven插件,我是來自官方的maven文檔教程如下:找不到定製Maven插件目標

http://maven.apache.org/guides/plugin/guide-java-plugin-development.html

然而,當我嘗試用我的插件從不同的項目,我得到如下:

Could not find goal 'generateProtoClasses' in plugin com.myComapny.maven.plugin:myCompany-protobuf-plugin:1.0 among available goals -> [Help 1] 

這是我MOJO:

@Mojo(name = "generateProtoClasses", defaultPhase = LifecyclePhase.GENERATE_RESOURCES) 
public class CompileProtoClasses extends AbstractMojo { 


    @Parameter(defaultValue = "mokmok") 
    private String inputPath; 

    public void execute() throws MojoExecutionException { 
     getLog().info("@@@@@@@@@@@@@@@@@@@@@@@"); 
     getLog().info(inputPath); 
    } 

} 

這是在使用了插件項目的pom.xml文件摘錄:

<plugin> 
     <groupId>com.myCompany.maven.plugin</groupId> 
     <artifactId>legolas-protobuf-plugin</artifactId> 
     <version>1.0</version> 
     <configuration> 
      <inputPath>yoyo</inputPath> 
     </configuration> 
     <executions> 
      <execution> 
       <goals> 
        <goal>generateProtoClasses</goal> 
       </goals> 
      </execution> 
     </executions> 
    </plugin> 

雙龍插件項目:

<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>com.myCompany.maven.plugin</groupId> 
    <artifactId>myCompany-protobuf-plugin</artifactId> 
    <version>1.0</version> 
    <packaging>maven-plugin</packaging> 

    <name>protobuf-plugin Maven Plugin</name> 

    <dependencies> 
     <dependency> 
      <groupId>org.apache.maven</groupId> 
      <artifactId>maven-plugin-api</artifactId> 
      <version>3.0.5</version> 
     </dependency> 

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


     <!-- dependencies to annotations --> 
     <dependency> 
      <groupId>org.apache.maven.plugin-tools</groupId> 
      <artifactId>maven-plugin-annotations</artifactId> 
      <version>3.2</version> 
      <!-- annotations are not needed for plugin execution so you can remove 
       this dependency for execution with using provided scope --> 
      <scope>provided</scope> 
     </dependency> 
     <!-- generated help mojo has a dependency to plexus-utils --> 
     <dependency> 
      <groupId>org.codehaus.plexus</groupId> 
      <artifactId>plexus-utils</artifactId> 
      <version>3.0.1</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> 
+0

您使用的是maven-plugin-annotations嗎?你可以顯示插件的pom嗎? – khmarbaise 2013-03-13 15:19:17

+0

添加了插件的pom – 2013-03-13 15:20:53

+0

將您的課程名稱更改爲** WhatEverMojo **並重新測試。檢查一下你在課堂上是否有混合案例的問題。 – khmarbaise 2013-03-13 16:24:56

回答

5

請問如果使用舊式它的工作xdoclet註釋?

/** 
* @goal generateProtoClasses 
* @phase generate-resources 
*/ 
public class CompileProtoClasses extends AbstractMojo { 

    /** 
    * @parameter default-value="mokmok" 
    */ 
    private String inputPath; 

    public void execute() throws MojoExecutionException { 
     getLog().info("@@@@@@@@@@@@@@@@@@@@@@@"); 
     getLog().info(inputPath); 
    } 
} 
+1

這就是我回復到的... – 2013-06-24 07:58:40

+1

同樣,我被Maven 3.0.5卡住了,並且無法輕易地在我們的環境中改變它,並且刪除了@Mojo註解,並用xdoclet樣式註釋替換它也適用於我。 – user1475135 2017-07-13 10:49:36

1

以下添加到您的建設 - > Maven的插件,插件

<execution> 
    <id>mojo-descriptor</id> 
    <goals> 
    <goal>descriptor</goal> 
    </goals> 
</execution> 
0

我收到此錯誤與Maven 3.0.5(Netbeans的內建) 獲取最新Maven版本和再次構建Maven插件。