maven插件执行顺序

时间:2016-07-25 05:20:12

标签: java maven maven-3 maven-failsafe-plugin

Here声明:

  自Maven 3.0.3起,两个插件绑定到同一个阶段,顺序   执行与定义它们的顺序相同

我正在使用Maven 3.3.9 ,我可以看到执行顺序并不总是按照POM中插件的顺序定义。

我有以下插件绑定到Maven生命周期阶段:

pre-integration-test:  maven-resources-plugin, 3.0.1            - prepares certain files
integration-test:      maven-failsafe-plugin, 2.19.1            - runs Cucumber-jvm tests
post-integration-test: exec-maven-plugin (id: cleaner), 1.5.0   - stops certain processes
                       maven-cucumber-reporting, 2.4.0          - generates rich HTML report
                       exec-maven-plugin (id: converter), 1.5.0 - converts rich HTML report to a light version

绑定到“集成后测试”阶段的三个插件按照它们在POM中定义的顺序列出。 如果所有测试都没有错误地通过(在“集成测试”阶段) - 这些插件按预期执行:按照它们在POM中定义的顺序执行。 但如果任何测试失败 - 那么我会遇到以下情况:

  • 首先运行第三个插件 - “exec-maven-plugin(id:converter)”。它 没有找到要转换的“丰富的HTML报告”并失败。
  • 之后第二个插件运行 - “maven-cucumber-reporting”。它成功了 生成“丰富的HTML报告”。
  • 第一个插件 - “exec-maven-plugin(id:cleaner)” - 永远不会运行

更奇怪的是:虽然“maven-cucumber-reporting”插件成功生成了丰富的HTML报告,但我在日志文件中看到以下内容:“无法执行目标maven-cucumber-reporting:2.4.0:生成(执行)项目...:发现错误:建立失败“

如果我在POM中注释掉第2个和第3个插件 - 那么剩下的插件(“exec-maven-plugin(id:cleaner)”)会成功运行 。在这种情况下,我在日志文件中看到以下内容:“无法执行目标maven-failsafe-plugin:2.19.1:验证(默认)项目......:有测试失败”。嗯,这个消息非常期待。

问题:为什么绑定到同一阶段的插件不按照在POM中定义的顺序执行(仅在前一阶段失败时)?

1 个答案:

答案 0 :(得分:1)

嗯,我自己找到了答案。拥有相同插件的两个定义(exec-maven-plugin)只是问题的一部分:它解释了错误的执行顺序,但没有解释为什么 cleaner 永远不会运行。后一个问题有以下解释:maven-cucumber-reporting插件具有代码,如果构建先前失败,它会阻止执行Maven生命周期的所有其他阶段。幸运的是,可以在参数中禁用此代码 - 有关详细信息,请参阅this issue at GitHub

相关问题