3

我开发了一个带有 @aggregator 注释的 maven 插件。

如果我跑

mvn clean compile my:artifact:task package

然后它编译2次。

所以我将这个片段插入我的 pom

<plugin>
   <groupId>my</groupId>
   <artifactId>artifact</artifactId>
   <version>1.0.0-SNAPSHOT</version>
   <executions>
       <execution>
           <id>post-classes</id>
           <phase>process-classes</phase>
           <goals>
              <goal>task</goal>
           </goals>
      </execution>
   </executions>
</plugin>

但随后它将在每个模块上运行(@aggregator 似乎被忽略了)。

编译后如何让插件运行一次?

编辑: 我的问题是指 eclipse tycho 的默认生命周期。但是有一个重大错误,所以我很困惑。

4

1 回答 1

1

从此:_

对于直接从 CLI 执行的 mojo,mojo 只会执行一次,而不是针对反应器中的每个项目执行。对于绑定到生命周期阶段的 mojo,将为存在生命周期绑定的每个项目执行 mojo。

你有两个选择:

  • 如果你坚持使用聚合器注解:移除生命周期绑定并通过命令行运行,例如“mvn clean compile my:artifact:task jar:jar”。与assembly:assembly类似,它被设计为直接从命令行调用,并且永远不应绑定到构建生命周期阶段。

  • 如果您坚持将插件绑定到生命周期,请删除聚合器注释并遵循本文。这个想法是检查 maven当前运行的项目属性。

于 2013-03-04T11:30:44.653 回答