Maven:自定义mojos,目标和阶段,它是如何适合的?

时间:2015-09-23 14:00:39

标签: java maven

以下是我对Maven内部模型(又名构建模型)的理解:

Maven确实有全球目标(清洁,构建,网站)。每个定义一个生命周期,也由包装指令改变。生命周期由阶段组成。

每个maven构建过程也有一组活动的插件。可以使用pom.xml的插件定义中的标记在任何阶段执行插件。

每个插件本身都提供一些mojos。那些mojos实际上是插件提供的目标,甚至可以在命令行上使用。

问题是它是如何组合在一起的?

Maven的默认目标是构建。如果我想将我的插件添加到资源:testResources阶段@Mojo注释必须是什么以及我的插件的pom表示部分应该是什么样的?

1 个答案:

答案 0 :(得分:1)

要将MOJO绑定到默认阶段,您需要使用@Mojo注释的defaultPhase属性。例如,要绑定到“流程测试资源”阶段,请使用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>