java - 如何让 Maven 自动重试(从失败的模块恢复)?

我正在处理一个由许多不同模块组成的大型 Maven 项目。 Maven 构建在某些模块上间歇性地失败,但如果一切正常,一个简单的手动调用 --resume-from(有时在几个不同的模块上)将允许它继续成功。

我故意省略了发生这种情况的确切原因 - 怀疑这可能是由于 Windows 文件锁定了目标文件夹中的文件 - 但这不是问题的重点。

问题:是否可以让 Maven 从失败的模块中自动重试(可能只重试一次,或者最多 3 次)?

想法:我目前能想到的唯一方法是通过批处理文件,该文件读取最后一行并以某种方式提取要从中恢复的模块名称 - 但这看起来并不容易.不想重新发明轮子,想知道是否有一个很好的 Maven 插件已经可以完成这项工作?

最佳答案

我有一个想法可以解决您的问题,也许您不需要批处理文件来完成这项工作。您可以创建一个 Maven 核心扩展并创建一个 EventSpy 库以在构建失败时执行 --resume-from。 我已经测试了这个答案中找到的这个例子 Run a maven plugin when build fails

根据这个答案,您可以使用 Maven Invoker Maven Invoker

然而...我找到了安全并行构建的扩展Maven Core Extensions Example for Safe Parallel Builds

我知道您需要项目信息...所以查看 ExecutionEvent 的内部和 MavenProject类我们有关于当前建筑项目的所有信息。

我希望它也对你有用。

编辑:

我正在寻找一些扩展,当某些模块出现故障时,它会“自动重试”这种行为。如果我没有找到任何东西,我们应该为此创建一个扩展。

https://stackoverflow.com/questions/54305409/

相关文章:

.net - 内容文件更改后 Visual Studio 未重建

qt - qmake 和 QT_INSTALL_PREFIX。如何为 Qt 库选择新位置?

maven - 在 Android Studio 中优化构建时间

c# - 在分支之间转换时生成错误 : Your project is not referencin

ios - xcode 5存档构建失败,但正常构建成功

delphi - 在 Delphi 中编译和构建有什么区别?

c++ - 如何为新安装的 Boost 添加编译器包含路径和链接器库路径?

qt - 如何在 Qt 子目录项目中设置构建顺序

java - 在应用程序中显示构建时间戳

c# - WPF 应用程序中的间歇性构建问题