2012-06-12 67 views
2

我按照這個指南:我的Maven插件不執行

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

我創建了一個Maven的插件項目「你好,Maven的插件」與POM文件:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>sample.plugin</groupId> 
    <artifactId>hello-maven-plugin</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>maven-plugin</packaging> 

    <name>Sample Parameter-less Maven Plugin</name> 

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

<build> 
    <plugins> 
     <plugin> 
     <groupId>sample.plugin</groupId> 
     <artifactId>hello-maven-plugin</artifactId> 
     <version>1.0-SNAPSHOT</version> 
     <executions> 
      <execution> 
      <phase>compile</phase> 
      <goals> 
       <goal>sayhi</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

當我建立它:

mvn install 

它打印「你好,世界。」在預期的控制檯中。

我已經創建了另一個Maven項目「my-project-usage」,我想使用「hello-maven-plugin」插件。它有這個POM:

<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> 
    <parent> 
    <artifactId>my-project</artifactId> 
    <groupId>com</groupId> 
    <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>my-project-usage</artifactId> 
    <build> 
    <plugins> 
     <plugin> 
      <groupId>sample.plugin</groupId> 
      <artifactId>hello-maven-plugin</artifactId> 
      <version>1.0-SNAPSHOT</version> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

當我建立這個項目從未執行HELLO-Maven的插件,爲什麼呢?

回答

2

將此<execution>塊從第一個POM移到第二個,因爲您需要插件在那裏執行,您使用插件的地方,而不是插件本身。

1

您指定的<plugin>部分插件的invcation,讓你從你的第一個POM需要適當的設置:

<plugins> 
    <plugin> 
    <groupId>sample.plugin</groupId> 
    <artifactId>hello-maven-plugin</artifactId> 
    ... 
    <executions> 
     <execution> 
     <phase>compile</phase> 
     <goals> 
      <goal>sayhi</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 
</plugins> 

<phase>部分指定了行家的階段應該插件運行和<goal>指定要執行的插件的目標