【问题标题】:why spring boot does not load application yml when packaged (With gradle)?为什么spring boot在打包(使用gradle)时不加载应用程序yml?
【发布时间】:2020-12-18 06:16:52
【问题描述】:

目前还没有发现任何有趣的东西,所以我来问一个问题。

我有一个运行良好的 Spring Boot 应用程序。问题是:自定义配置! 我希望它在端口 8081(而不是默认端口 8080)上运行。于是我在 src/main/resources 目录下添加了 application.yml ,将其打包...并运行在 8080 端口 当我从 intellij 运行 @SpringBootApplication 类时,它确实在端口 8081 上运行(我刚刚添加了 application.yml 文件。)那为什么?

这是一个 gradle 多模块项目。 T 将 application.yml 文件添加到实际打包成 jar 文件的模块中。它是使用 tha gradle shadow 插件打包的,并且确实在 jar 文件的根目录下包含 application.yml 文件。

application.yml 是这样的:

server:
    port: 8081

我真的不知道您需要哪些信息,所以请随时询问!

欢迎提出任何想法。

编辑 1: 启动服务器时的“Stacktrace”:

java -jar serverApp.jar 

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                        

août 29, 2020 5:50:54 PM org.apache.coyote.AbstractProtocol init
INFOS: Initializing ProtocolHandler ["http-nio-8080"]
août 29, 2020 5:50:54 PM org.apache.catalina.core.StandardService startInternal
INFOS: Starting service [Tomcat]
août 29, 2020 5:50:54 PM org.apache.catalina.core.StandardEngine startInternal
INFOS: Starting Servlet engine: [Apache Tomcat/9.0.37]
août 29, 2020 5:50:54 PM org.apache.catalina.core.ApplicationContext log
INFOS: Initializing Spring embedded WebApplicationContext
août 29, 2020 5:50:55 PM org.apache.coyote.AbstractProtocol start
INFOS: Starting ProtocolHandler ["http-nio-8080"]

【问题讨论】:

  • 请分享堆栈跟踪和代码
  • @SkillsIndexOutOfBounds 哪部分代码?
  • 这不应该是完整的跟踪。请添加完整的。

标签: java spring-boot gradle


【解决方案1】:

在没有看到实际代码的情况下,我可以推荐 2 件事来尝试。

1-你有没有错过在main方法中使用参数-

public static void main(String[] args) {
    SpringApplication.run(ServerApplication.class, args);
}

2-尝试使用参数启动springboot服务器-

java -jar -Dserver.port=8081 ServerApplication.jar

【讨论】:

  • 1- 看起来像这样,带有 args 等。 2 - 尝试过,甚至不起作用....我确实希望它在属性/yml 文件中,但即使在命令行它不起作用...
  • 我的错,选项 2 有效,我的终端隐藏了一些字符,所以我有 -Dservrvrer.port --' 我仍然更喜欢它在文件中,有什么想法吗?
  • @Mlem ,要在文件中修复它,您还必须共享您的代码,我相信这一定是您正在做的一些小错误。如果选项 2 解决了您的问题,请批准/投票。
  • 您需要哪部分代码?我没有与此属性相关的代码 很确定它也是次要的,我想当我找到它时我会觉得很愚蠢,但在 atm 中看不到它......
  • 只是像主类一样的项目脚手架,build grdle,application.yaml。把它放到你的 github repo 中,并分享链接。
【解决方案2】:

根据this 评论,似乎Shadow Plugin 不适合与Spring Boot 一起使用:

启动框架有它自己的 gradle 插件和打包可分发 jar 文件的方法。我不认为我会将影子和引导插件结合在同一个项目中。它们会发生碰撞。

还有this

【讨论】:

  • 看来你是对的。花了我一段时间,升级 gradle 遇到了问题,我脑子里不是很清楚,不确定是否完全升级了,但至少包装器是,项目编译,没有影子战争,但 gradle 插件,工作正常 :) 谢谢!
猜你喜欢
  • 2021-03-25
  • 1970-01-01
  • 2020-01-19
  • 2021-08-13
  • 2019-08-10
  • 1970-01-01
  • 2018-12-03
  • 2016-07-17
  • 2018-11-22
相关资源
最近更新 更多