如何使maven自动重试(从失败的模块恢复)?

我正在研究一个大型Maven项目,该项目由许多不同的模块组成。maven构建在某些模块上间歇性失败,但如果一切正常,则一个简单的手动调用(有时在几个不同的模块上)将允许它继续成功。
我故意省略了发生这种情况的确切原因的细节-怀疑可能是由于Windows文件锁定了目标文件夹中的文件-但这不是问题的关键。
问题:是否可以让Maven自动重试(可能仅一次,或最多三次),从故障模块中恢复?
思考:我目前唯一能想到的方法是通过一个批处理文件来完成,它读取最后一行,并以某种方式提取要从中恢复的模块名——但这看起来并不容易。不想重新发明轮子,想知道是否有一个好的Maven插件已经完成了任务?


最佳答案:

我有一个办法来解决你的问题,也许你不需要一个批处理文件来完成这项工作。您可以创建一个maven核心扩展,并创建一个要执行的eventspy库——当构建失败时从中恢复。
我已经测试了这个答案中的例子Run a maven plugin when build fails
基于此答案,您可以使用maven invokerMaven Invoker
然而…我发现了安全并行构建的扩展Maven Core Extensions Example for Safe Parallel Builds
我知道你需要项目信息…因此,从ExecutionEventMavenProject类的内部看,我们有关于当前建筑项目的所有信息。
我希望它也会对你有用。
编辑:
我正在寻找一些扩展,当某些模块发生故障时,它实现了这种行为“自动重试”。如果我找不到任何东西,我们应该为它创建一个扩展。

评论