Plugins 如何在一个阶段内执行几个maven插件并设置它们各自的执行顺序?

Plugins 如何在一个阶段内执行几个maven插件并设置它们各自的执行顺序?,plugins,maven-2,phase,Plugins,Maven 2,Phase,我想将maven生命周期中的某些阶段分解为几个子阶段。我想控制从一个子阶段到另一个子阶段的执行流,有点像蚂蚁依赖 例如,在我的项目打包成war文件之后,我想使用NSIS插件在打包阶段将我的项目打包成安装程序。我想在包装阶段做所有这些 这可能吗?绑定到同一阶段的插件应按照POM中列出的顺序执行。在某些情况下(例如,如果您将同一个插件绑定到一个阶段两次,如antrun插件),这可能不会发生,但这是一个错误(请参阅和相关问题)。我也有同样的问题。看看 由于某些原因,绑定到某个阶段的不同目标存储在哈希映

我想将maven生命周期中的某些阶段分解为几个子阶段。我想控制从一个子阶段到另一个子阶段的执行流,有点像蚂蚁依赖

例如,在我的项目打包成war文件之后,我想使用NSIS插件在打包阶段将我的项目打包成安装程序。我想在包装阶段做所有这些


这可能吗?

绑定到同一阶段的插件应按照POM中列出的顺序执行。在某些情况下(例如,如果您将同一个插件绑定到一个阶段两次,如antrun插件),这可能不会发生,但这是一个错误(请参阅和相关问题)。

我也有同样的问题。看看 由于某些原因,绑定到某个阶段的不同目标存储在哈希映射或其他无序结构中,这使得执行顺序随机。 我的解决方案是将任务分散到不同的阶段,但我认为在您的案例中没有太大意义(nsis打包不是预集成测试)。 您可以执行以下操作之一:

1) 试试你的运气,看看Maven是否为你选择了正确的顺序(你可能已经试过了)

2) 使用独立插件-在生命周期之外运行目标。比如: mvn包org.codehaus.mojo:nsisMaven插件:1.0:compile

3) 将它们分成模块:有一个包含两个子模块的父pom,一个是您的war项目,另一个是nsis项目

4) 通过更改类型使用自定义生命周期,在您的情况下,您可以使用“exe”。这是通过使用自定义插件扩展()完成的

5) 使用。我从未使用过它,但它似乎与您的需求相关

希望这能给你带来新的想法


Ronen

Maven不是按照pom中列出的顺序执行绑定到同一生命周期阶段的插件目标吗?只是一个猜测,可能值得测试…不知道。。。我会尝试一下,但除了一些默认生命周期为@Pascal is right的“扭结”之外,这些都不是“扭结”。事实上,如果你问Maven的人,他们会告诉你,第3条最符合“Maven方式”,即模块分离,当你考虑它时,创建web应用程序和安装程序项目是两件独立的事情是很有意义的。但是如果你在不相关的块中指定它们呢,例如普通构建块与作为概要文件块一部分的构建块?profile块中可能有一些插件应该在plugins块中的插件之后运行,但其他插件可能不会。这不会发生(至少在maven 3.0.4中是这样)。我有两个插件,执行绑定生成源代码,一个在大约6个插件的列表中列在第一位,另一个列在最后。然而,最后列出的一个(取决于第一个列出的)总是首先执行。同意matt5784,这很烦人:(解决方法:按所需的顺序排序并反向。已测试并适用于我:)列出的错误据称在Maven 3.0.3中已修复。