在maven生命周期中添加阶段?

wem*_*emu 10 maven-plugin maven maven-lifecycle

我尝试在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>
Run Code Online (Sandbox Code Playgroud)

以上包含新的应用测试和系统测试阶段(包括前后).

我已经开始了一个测试插件:codezoo-lifecycle-maven-plugin 我用于测试的pom是在src/it文件夹中.

这似乎是新的阶段或有些发现,但有一些奇怪的事情发生:

mvn post-application-test
Run Code Online (Sandbox Code Playgroud)

这有效.还添加了我为测试添加的echo插件.但是有一些警告(使用maven 3.3.9).

mvn install
Run Code Online (Sandbox Code Playgroud)

执行跳过新阶段的默认生命周期.

如果我将生命周期的id"test-levels"更改为"default",则会执行两次阶段.

发出的警告是:

[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
....
Run Code Online (Sandbox Code Playgroud)

发出此警告的源代码表示生命周期未正确命名空间.但我无法弄清楚这是怎么做到的.

我在网上找到了一些提示:create-a-new-phase(Stackoverflow)或其他插件,如maven-scm-publish-plugindocker-maven-plugin.但这些要么创建一个完整的新生命周期,要么只是从默认的maven生命周期中更改插件映射.

网络上有关此主题的所有其他内容似乎至少已有4年......

所以:

  • 如何在maven默认生命周期中添加其他阶段(如果我必须重复默认的插件映射:我可以忍受它)
  • 我怎样才能命名新的生命周期?我似乎创建了自己的包装(在配置中引用为role-hint).但是maven仍有一些回退到默认生命周期.
  • 可以重新使用默认的maven阶段吗?

测试插件的当前状态是在github上.

谢谢!

小智 0

通常,当您需要额外的构建阶段时 - 这是您需要拆分代码并将其部分移动到专用于单独功能的额外 Maven 模块的信号。

添加模块之间的依赖关系,因此在开始构建 Maven 模块构建图后的结果中,并按预期顺序一一构建它们。