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

发布于 2024-08-26 19:05:40 字数 165 浏览 7 评论 0原文

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

例如,我想使用 NSIS 插件,以便在打包阶段将我的项目打包成安装程序,在我的项目被打包成一个 war 文件之后。我想在打包阶段完成所有这些工作。

这可能吗?

I would like to breakup certain phases in the maven life cycle into sub phases. I would like to control the execution flow from one sub-phase to another, sort of like with ant dependencies.

For example, I would like to use the NSIS plugin in order to package up my project into an installer at the package stage, AFTER my project had been packaged into a war file. I would like to do all that at the package phase.

Is that possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

同尘 2024-09-02 19:05:40

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

Plugins bound to the same phase should be executed in the same order as they are listed in the POM. Under certain circumstances (e.g. if you bind the same plugin to a phase twice, like the antrun plugin), this may not occur but this is a bug (see MNG-2258 and the related issue MNG-3719).

把时间冻结 2024-09-02 19:05:40

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

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

2)使用独立插件 - 在生命周期之外运行目标。像这样的东西:
mvn 包 org.codehaus.mojo:nsis-maven-plugin:1.0:编译。

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

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

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

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

罗南

I had the same problem. look at How to perform ordered tasks in Maven2 build.
for some reason the different goals bound to a phase are stored in a hash map or other unordered structure which makes the execution order random.
my solution was to spread the tasks to different phases but I dont think there is much sence for it in your case (nsis packaging is not pre integration test).
you could do one of the following:

1) try your luck and see if Maven chosses the right order for you (you probably tried that already)

2) use standalone plugin - run the goal outside the lifecycle. something like:
mvn package org.codehaus.mojo:nsis-maven-plugin:1.0:compile.

3) separate them into module: have a parent pom containing two sub modules, one - your war project and the other for the nsis project.

4) use a custom lifecycle by changing the type, in your case you can use "exe". this is done by using a custom plugin extension (guide to using extension)

5) use the jetspeed-mvn-maven-plugin. I have never used it but it seems relevant to your needs.

hope this gives you new ideas.

Ronen

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文