gpt4 book ai didi

java - Maven 多模块项目 - 如何在所有子模块完成后运行操作

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:55:08 25 4
gpt4 key购买 nike

我有一个多模块 Maven 项目,我希望能够在所有子模块完成执行后运行一个操作 (antrun)。

在我的项目中,我从每个子模块构建 RPM,在部署阶段,我将 RPM(通过 ssh)复制到 RPM 存储库。
RPM 存储库要求我在添加新的 RPM 后运行 createdb 命令,以便它可以为它们建立索引。
所以我有一个实际运行 scp 并将 RPM 复制到 repo 的 antrun。它为每个实际生成 RPM 的子模块运行,并挂接到 maven deploy 阶段。我能做的是在每个 scp 运行 createrepo 命令之后,但这很浪费,我有 10 多个子模块,每个 createrepo 大约需要一分钟,所以我会浪费宝贵的构建时间。

我想做的是在所有子模块完成后,运行 createrepo。一次。

我的第一次尝试是将调用 createrepo 命令的 antrun 挂接到父 pom( super pom)的部署阶段。我这样做了,问题是父模块的部署阶段在子模块的部署阶段之前运行。我希望它在之后
运行我无法将 createrepo antrun 附加到任何其他后续阶段,因为部署阶段是生命周期中的最后一个阶段。

所以我的问题是:在所有子模块的所有构建操作都成功结束后,有没有一种方法可以运行“清理”antrun 或通常会执行一次的插件?

绕过它的方法是创建另一个子模块,并通过使其依赖于所有其他模块并从该模块的部署阶段运行 createrepo 来确保它是最后一个。但这很丑陋且难以维护。我更喜欢更清洁的解决方案。

谢谢

Maven版本是2.2.1

最佳答案

我不太确定您关于创建依赖于所有其他模块的专用模块的最终建议是否如此丑陋。毕竟,它是在利用 Maven 的依赖管理。您可以以非常明显的方式命名它,以使维护人员清楚地了解正在发生的事情,并且它将很好地适应项目的整体构建过程。

为什么不把它放在适当的位置,看看它对你的效果如何?请记住,工作代码每次都胜过漂亮但不工作的代码。

关于java - Maven 多模块项目 - 如何在所有子模块完成后运行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4184195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com