我尝试在 Maven 生命周期中添加一些额外的阶段。主要是增加一些额外的测试级别:
<phases>
<phase>initialize</phase>
<phase>process-resources</phase>
<phase>compile</phase>
<phase>process-test-resources</phase>
<phase>test-compile</phase>
<phase>test</phase>
<phase>prepare-package</phase>
<phase>package</phase>
<phase>pre-integration-test</phase>
<phase>integration-test</phase>
<phase>post-integration-test</phase>
<phase>pre-application-test</phase>
<phase>application-test</phase>
<phase>post-application-test</phase>
<phase>pre-system-test</phase>
<phase>system-test</phase>
<phase>post-system-test</phase>
<phase>finalize-tests</phase>
<phase>install</phase>
<phase>deploy</phase>
</phases>
以上包含新的应用程序测试和系统测试阶段(包括前期和后期)。
我已经在以下位置启动了一个测试插件:codezoo-lifecycle-maven-plugin 我用于测试的 pom 位于src/it文件夹中。
似乎新阶段或有所回升,但发生了一些奇怪的事情:
mvn post-application-test
这行得通。我为测试添加的回声插件也被执行。但是有一些警告(使用 maven 3.3.9)。
mvn install
执行默认生命周期跳过新阶段。
如果我将生命周期的“测试级别”的 ID 更改为“默认”,则阶段会执行两次。
发出的警告是:
[WARNING] Duplicated lifecycle phase package. Defined in default but also in test-levels
[WARNING] Duplicated lifecycle phase pre-integration-test. Defined in default but also in test-levels
[WARNING] Duplicated lifecycle phase integration-test. Defined in default but also in test-levels
....
发出此警告的源代码表明生命周期未正确命名空间。但我无法弄清楚这是如何做到的。
我在网上找到了一些提示:create-a-new-phase (Stackoverflow) 或其他插件,如maven-scm-publish-plugin或docker-maven-plugin。但是那些要么创建一个完整的新生命周期,要么只是从默认的 Maven 生命周期更改插件映射。
网络上有关此主题的所有其他内容似乎至少有 4 年历史了……
所以:
- 如何向 Maven 默认生命周期添加其他阶段(如果我必须重复默认插件映射:我可以忍受)
- 如何命名新的生命周期?似乎我创建了自己的包装(在配置中被称为角色提示)。但是 Maven 仍然有一些回退到默认生命周期。
- 可以不重复使用默认的 Maven 阶段吗?
测试插件的当前状态在 github 上。
谢谢!