【问题标题】:Spring boot run ends successfully but embedded server is downSpring Boot 运行成功结束,但嵌入式服务器已关闭
【发布时间】:2019-05-30 10:17:00
【问题描述】:

我正在执行一个 maven spring-boot:run 命令,它没有错误地结束,但它的嵌入式服务器一直在关闭。

[CPRO][ INFO] [2019-05-30 10:01:03] [es.ja.ctpd.calcprod.CalcProdApplication.main()] [org.apache.juli.logging.DirectJDKLog.log(179)] Using a shared selector for servlet write/read
[CPRO][ INFO] [2019-05-30 10:01:03] [es.ja.ctpd.calcprod.CalcProdApplication.main()] [org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.start(185)] Tomcat started on port(s): 8090 (http)
[CPRO][ INFO] [2019-05-30 10:01:03] [es.ja.ctpd.calcprod.CalcProdApplication.main()] [org.springframework.boot.StartupInfoLogger.logStarted(57)] Started CalcProdApplication in 10.351 seconds (JVM running for 13.681)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.806 s
[INFO] Finished at: 2019-05-30T10:01:03+02:00
[INFO] ------------------------------------------------------------------------

我正在从事一个多模块项目。我启动的命令是这个(位于 \application 文件夹中)

mvn spring-boot:start -P dev -s <path>\settings.xml -Dspring.profiles.active=dev

我已经看到它is possible to launch boot using java -jar,但我的应用程序是一场战争,所以我不知道我是否可以使用这个选项。

我还注意到,在我的 STS IDE 启动服务器时(这工作正常),控制台中有一些日志行 "AUTO-CONFIGURATION REPORT" 在我的命令中不存在-线启动。

谢谢!

更新

好的,正如@andy-wilkinson 所说,我必须使用 spring-boot:run,但我仍然遇到问题。我终于能够使用此设置运行我的应用程序:

1 - spring-boot:repackage 命令:

mvn clean install spring-boot:repackage -P dev -s <path>\settings.xml -Dspring.profiles.active=dev -Dstart-class=<myclass>

2 - 使用 java -jar 启动命令:

java -jar -Dspring.profiles.active=dev application\target\application-1.0.0.BUILD-SNAPSHOT-exec.war

最后两条评论:

  • 我知道我应该使用不同的运行配置文件,这将是下一个重要步骤。
  • 我不得不删除我拥有的一个useles orm.xml 文件,该文件给出了一个XML 解析错误,现在它运行没有问题。在启动过程中只有一条 tomcat 缓存日志行,我将在另一篇文章中询问。

【问题讨论】:

  • 你能发布你的 pom.xml 吗?通常这是因为您缺少一个依赖项,例如 org.springframework.bootspring-boot-starter-web

标签: spring-boot


【解决方案1】:

如果您想使用 Maven 从命令行运行您的应用程序,您应该使用 spring-boot:run 而不是 spring-boot:start

mvn spring-boot:start 旨在用于集成测试和故障安全。它启动应用程序,然后继续。通常紧随其后的是 Failsafe 对正在运行的应用程序调用一些集成测试,然后调用 spring-boot:stop 来停止应用程序。您正在专门运行 start 目标,因此没有其他事情可做,Maven 退出。

我已经看到可以使用 java -jar 启动启动,但是我的应用程序是一个战争,所以我不知道我是否可以使用这个选项。

可以使用java -jar 运行可执行的战争(使用 Spring Boot 的 Maven 插件构建的)。这就是它应该在开发之外运行的方式,spring-boot:run 仅供我们在开发时使用。

【讨论】:

    猜你喜欢
    • 2021-05-18
    • 2019-10-11
    • 2015-09-30
    • 2021-01-30
    • 2021-06-27
    • 2011-03-02
    • 2016-11-03
    • 1970-01-01
    • 2017-08-14
    相关资源
    最近更新 更多