【发布时间】:2016-08-05 16:36:19
【问题描述】:
我尝试在 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
....
发出此警告的source code 表示生命周期未正确命名空间。但我不知道这是怎么做到的。
我在网上找到了一些提示:create-a-new-phase (Stackoverflow) 或其他插件,如 maven-scm-publish-plugin 或 docker-maven-plugin。但是那些要么创建一个完整的新生命周期,要么只是从默认的 Maven 生命周期更改插件映射。
网络上有关此主题的所有其他内容似乎至少有 4 年历史...
所以:
- 如何向 Maven 默认生命周期添加其他阶段(如果我必须重复默认插件映射:我可以忍受)
- 如何命名新的生命周期?似乎我创建了自己的包装(在配置中被称为角色提示)。但 Maven 仍然有一些回退到默认生命周期。
- 可以不重复使用默认的maven阶段吗?
test plugin is on github 的当前状态。
谢谢!
【问题讨论】:
标签: maven maven-plugin maven-lifecycle