2

我已遵循本指南:

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

它打印“你好,世界”。按预期在控制台中。

我创建了另一个 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 永远不会执行,为什么?

4

2 回答 2

2

将此<execution>块从第一个 POM 移到第二个,因为您需要在此处执行插件,您使用插件的地方,而不是插件本身。

于 2012-06-12T14:12:11.397 回答
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>部分指定插件应在 maven 的哪个阶段运行以及<goal>指定要执行的插件的哪个目标

于 2012-06-12T14:12:02.177 回答