2012-06-12 66 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>指定要执行的插件的目标