我已遵循本指南:
http://maven.apache.org/guides/plugin/guide-java-plugin-development.html
我用pom文件创建了一个maven-plugin项目“hello-maven-plugin”:
<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
打印出“Hello,world”。在预期的控制台中。
我创建了另一个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-plugin永远不会执行,为什么?
答案 0 :(得分:2)
将此<execution>
块从第一个POM移动到第二个POM,因为您需要在那里执行插件,使用插件,而不是插件本身。
答案 1 :(得分:1)
您可以在<plugin>
部分指定插件的邀请,因此您需要第一个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>
指定要执行的插件的目标