我有一个在嵌入式 Tomcat servlet 容器 mvn spring-boot:run
上运行的 Spring Boot 应用程序。而且我不想将该项目作为单独的 war 部署到独立的 Tomcat。
每当我将代码推送到 BitBucket/Github 时,一个 Hook 就会运行并触发 Jenkins 作业(在 Amazon EC2 上运行)以部署应用程序。
Jenkins 作业有一个构建后操作:mvn spring-boot:run
,问题是在构建后操作完成后作业挂起。
应该有另一种方法来做到这一点。任何帮助将不胜感激。
最佳答案
问题是 Jenkins doesn't handle spawning child process from builds very well . @Steve 在评论中建议的解决方法 (nohup
ing) 并没有改变我的行为,但一个简单的解决方法是使用 schedule 应用启动>at
unix 命令:
> echo "mvn spring-boot:run" | at now + 1 minutes
通过这种方式,Jenkins 成功地完成了工作而不会超时。
如果您最终通过 java -jar app.jar
从 .jar
文件运行您的应用程序,请注意 Boot breaks if the .jar file is overwritten ,您需要确保应用程序在复制 Artifact 之前已停止。如果您正在使用 ApplicationPidListener
,您可以通过添加以下命令的执行来验证应用程序是否正在运行(如果正在运行则停止它):
> test -f application.pid && xargs kill < application.pid || echo 'App was not running, nothing to stop'
关于maven - 如何使用 Jenkins 部署 Spring Boot Maven 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28500066/