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中定义的顺序执行。 但如果任何测试失败 - 那么我会遇到以下情况:
更奇怪的是:虽然“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中定义的顺序执行(但仅在前一阶段失败时)?
答案 0 :(得分:1)
嗯,我自己找到了答案。拥有相同插件的两个定义(exec-maven-plugin)只是问题的一部分:它解释了错误的执行顺序,但没有解释为什么 cleaner 永远不会运行。后一个问题有以下解释:maven-cucumber-reporting插件具有代码,如果构建先前失败,它会阻止执行Maven生命周期的所有其他阶段。幸运的是,可以在参数中禁用此代码 - 有关详细信息,请参阅this issue at GitHub。