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

Ran*_*Ran 8 java maven-2

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

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

我想做的是在所有子模块完成之后,然后运行createrepo.一旦.

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

所以我的问题是:在所有子模块的所有构建操作都成功结束之后,有没有办法运行一个"清理"antrun或一般插件,它会被执行一次?

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

谢谢

Maven版本是2.2.1

Gar*_*owe 5

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

为什么不将其安装到位并看看它对您的效果如何?请记住,有效的代码每次都会击败漂亮但无效的代码。

  • 我同意,专门为此任务命名的模块很有意义。您还可以将其放置在单独的配置文件中,以便它仅针对特定部署运行。 (4认同)
  • 我的音乐会是维护(当添加新模块时),v/sa hack 是多么明显。如果没有其他内置且明显的解决方案,我会选择这个 (2认同)