使用预定义的配置文件运行Spring Boot JAR

问题描述

我正在尝试使用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轮廓是完全不同的东西,不应影响弹簧轮廓。

我不知道从哪里查找问题,因为当我通过Intellij IDEA中的 Run 按钮启动应用程序时,它运行良好,并且可以识别设置为活动状态的每个配置文件

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

我知道有很多问题,例如我的,但大多数接受的答案在我的情况下均不起作用,其余问题均未得到解答。如果您知道这里可能有什么问题,请告诉我。预先感谢您的帮助!

解决方法

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

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

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

spring.profiles.active=prod