java - Maven:自定义魔力、目标和阶段,它如何适合?

标签 java maven

以下是我对 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/

相关文章:

java - 根据 json 中的 ID 对 fragment 中的项目进行排序

java - 如何从远程计算机即时调试 Java servlet 过滤器(我使用的是 Eclipse 和 Apache Tomcat 5.5)

java - 没有 'java.util.Set<javax.persistence.EntityManager> 类型的合格 bean

java - 跟踪 JSF 应用程序中的序列化问题

java - 我可以使用 Comparator 类在 Java 1.6 中对 TreeMap 进行排序吗?

java - 为什么java更擅长处理递归?

java - Maven 3 中的依赖项分组

java - 在 Spring 上下文中查找 *.properties 文件的绝对路径

maven - httpclientSchemeRegistryFactory.createSystemDefault没有这样的方法错误

具有父 POM 的多模块项目的 Maven 版本控制