【问题标题】:Run Spring Boot JAR with predefined profile使用预定义的配置文件运行 Spring Boot JAR
【发布时间】:2021-01-12 18:26:43
【问题描述】:

我正在尝试使用 java -jar sample.jar 命令运行我的 JAR 文件,并且我正在使用带有以下设置的 application.yml 配置文件

spring:
  profiles:
    active:
      - dev
---
server:
  port: 8081
spring:
  profiles: dev
---
server:
  port: 8082
spring:
  profiles: test

但应用程序无法识别返回
No active profile set, falling back to default profiles: default 信息并将端口设置为默认 8080 的配置文件

我尝试过
java -jar sample.jar -Drun.jvmArguments=-Dspring.profiles.active=dev
java -jar sample.jar -Dspring.profiles.active=dev

在我的pom.xml 文件中,我所做的唯一更改是添加<packaging>jar</packaging> 属性。

据我所知,maven 配置文件是完全不同的东西,不应该影响 spring 配置文件。

我不知道在哪里寻找问题,因为当我通过 Intellij IDEA 中的 Run 按钮启动应用程序时,它可以完美运行并识别每个设置为活动的配置文件。

这里的实际问题是如何设置默认配置文件以在构建工件时运行,因此无需在运行 jar 的终端命令中放置额外的标志。

我知道有很多像我这样的问题,但他们接受的大多数答案在我的情况下都不起作用,其余的都没有答案。如果您知道这里可能存在什么问题,请告诉我。提前感谢您的帮助!

【问题讨论】:

    标签: java spring jar executable-jar


    【解决方案1】:

    您可以通过命令行参数激活配置文件。在您的尝试中,您在 jar 名称之后定义活动配置文件。您需要在您正在运行的 jar 名称之前提供程序参数。

    java -jar -Dspring.profiles.active=dev  sample.jar
    

    另一种设置活动配置文件的方法是创建一个具有以下属性的application.properties 文件:

    spring.profiles.active=prod
    
    

    【讨论】:

    • 所以这里的顺序很重要——java -jar -Dspring.profiles.active=dev sample.jar 命令设法将配置文件设置为dev,但没有更改配置。虽然dev 配置文件处于活动状态,但我希望应用程序可以在端口 8081 上运行,但仍获得默认值 8080。您知道导致这种行为的原因吗?
    • 我刚刚从 application.properties 移动到 application.yml 并编写了与 application.properties 中相同的设置。
    • 您的application.yml 文件是否位于正确的位置? Spring 是否记录它在启动时加载了您的文件?
    • 它与application.properties 位于同一位置。它在命令 20:43:46.096 [main] DEBUG org.springframework.core.env.PropertySourcesPropertyResolver - Found key 'spring.profiles.active' in PropertySource 'systemProperties' with value of type String 20:43:46.099 [main] DEBUG org.springframework.web.context.support.StandardServletEnvironment - Activating profiles [dev] 之后说,但仍然没有加载配置 - 端口设置为默认值
    • 一切似乎都是正确的。如果不访问完整的源代码来检查是否配置错误,就很难调试这种错误。我要尝试的另一件事是打开生成的 jar 并检查 application.yml 是否存在。我知道这不是您想要的,但您也可以通过命令行参数更改端口:java -jar -Dserver.port=8081 sample.jar
    猜你喜欢
    • 2019-07-12
    • 2022-01-04
    • 2021-06-24
    • 2021-10-13
    • 1970-01-01
    • 2016-04-03
    • 2018-12-01
    • 2018-08-16
    • 2021-11-16
    相关资源
    最近更新 更多