问题是Jenkins 不能很好地处理生成的子进程。@Steve在注释中建议的解决方法(nohup
)并没有改变我的情况,但是一个简单的解决方法是使用unix命令安排 应用程序的启动at
:
> echo "mvn spring-boot:run" | at Now + 1 minutes
这样,詹金斯就可以成功完成工作而不会超时。
如果最终.jar
通过覆盖文件.jarjava -jar app.jar
导致Boot中断而从文件运行应用程序,则需要确保在复制工件之前应用程序已停止。如果正在使用ApplicationPidListener
,则可以通过添加以下命令的执行来验证应用程序是否正在运行(如果正在运行,则将其停止):
> test -f application.pid && xargs kill < application.pid || echo 'App was not running, nothing to stop'