以下是我对 Maven 内部模型(又名构建模型)的理解:
Maven 确实有全局目标(清理、构建、站点)。每个都定义了一个生命周期,该生命周期也被包装指令改变。生命周期由多个阶段组成。
每个 Maven 构建过程还有一组处于 Activity 状态的插件。可以使用 pom.xml 的插件定义中的标记在任何阶段执行插件。
每个插件本身都提供一些魔力。这些魔力实际上是插件提供的目标,甚至可以在命令行上使用。
问题是它们如何组合在一起?
Maven 的默认目标是构建。如果我想将我的插件添加到 resources:testResources 阶段,@Mojo 注释必须是什么以及我的插件的 pom 表示部分应该是什么样子?
最佳答案
要将 MOJO 绑定(bind)到默认阶段,您需要使用 defaultPhase
@Mojo
注释的属性。例如,要绑定(bind)到“进程测试资源”阶段,请使用 LifecyclePhase.PROCESS_TEST_RESOURCES
。请注意,默认情况下,此默认阶段设置为 none,这意味着如果未设置 defaultPhase
,则必须在 POM 中指定要执行的插件的阶段。
有了这样的默认阶段,不在 POM 中指定阶段将导致插件在该阶段执行。
也可以覆盖该阶段,如下所示:
<plugin>
<groupId>...<groupId>
<artifactId>...</artifactId>
<version>...</version>
<executions>
<execution>
<id>id</id>
<phase>process-resources</phase> <!-- force phase to process-resources, whatever the default -->
</execution>
</executions>
</plugin>
关于java - Maven:自定义魔力、目标和阶段,它如何适合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32741724/