maven - 如何使用 Jenkins 部署 Spring Boot Maven 应用程序?

标签 maven tomcat jenkins spring-boot microservices

我有一个在嵌入式 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 在评论中建议的解决方法 (nohuping) 并没有改变我的行为,但一个简单的解决方法是使用 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/

相关文章:

java - Spring Boot Maven 插件并需要Unpack目标目录

java - tomcat如何下载maven依赖?

java - Spring HTTPS 正在切换到 HTTP : I want to use either HTTPS or HTTP for the site depending on the user

java - Silk Test Open Agent 在测试执行后不会自动停止

maven - 元素链接 XRef 不允许 intellij maven

git - 如何有条件地跳过 Jenkins for CI 的 Maven 测试

tomcat - docker mesosphere marathon - 无法看到 docker 容器内正在运行的进程

terminal - 如何从终端更新jenkins插件?

java - 执行 selenium 测试时,浏览器未在 Jenkins 中打开

java - 构建项目时 Maven 构建实现时出错