通过Maven在SpringBoot中配置活动配置文件

我正在尝试使用Maven 3在Spring Boot应用程序中设置活动配置文件。
在我的pom.xml中,我将默认的活动配置文件和属性spring.profiles.active设置开发

  development  development   true    

但每次运行我的应用程序时,我都会在日志中收到以下消息:

 No active profile set, falling back to default profiles: default 

并且SpringBoot配置文件设置为default(读取application.properties而不是application-development.properties)

我还应该做些什么来使用Maven配置文件设置我的SpringBoot活动配置文件?
任何帮助高度赞赏。

Maven配置文件和Spring配置文件是两个完全不同的东西。 您的pom.xml定义了spring.profiles.active变量,该变量在构建过程中可用,但在运行时不可用。 这就是为什么只激活默认配置文件的原因。

如何用Spring绑定Maven配置文件?

您需要将构建变量传递给应用程序,以便在启动时可用。

  1. application.properties定义占位符:

     spring.profiles.active=@spring.profiles.active@ 

    @spring.profiles.active@变量必须与Maven配置文件中声明的属性匹配。

  2. 在你的pom.xml中启用资源过滤:

        src/main/resources true   

    执行构建时, src/main/resources目录中的所有文件都将由Maven处理, application.properties的占位符将替换为您在Maven配置文件中定义的变量。

有关详细信息,您可以转到我描述此用例的post 。

你应该使用Spring Boot Maven插件

  ...  ...  ...  org.springframework.boot spring-boot-maven-plugin 1.5.1.RELEASE   foo bar   ...  ...  ...  ...  

您可以使用以下命令运行。 在这里,我想使用spring profile local

spring-boot:run -Drun.jvmArguments="-Dspring.profiles.active=local"

或者相当容易:

 mvn spring-boot:run -Dspring-boot.run.profiles={profile_name} 

有多种方法可以为springboot应用程序设置配置文件。

  1. 您可以在属性文件中添加:

     spring.profiles.active=dev 
  2. 程序化方式:

     SpringApplication.setAdditionalProfiles("dev"); 
  3. 通过测试,可以轻松指定哪些配置文件处于活动状态

     @ActiveProfiles("dev") 
  4. 在Unix环境中

     export spring_profiles_active=dev 
  5. JVM系统参数

     -Dspring.profiles.active=dev 

在开发中,激活特定Maven配置文件时激活Spring Boot配置文件是正确的。 您应该在Maven配置profiles中使用spring-boot-maven-plugin 的profiles属性 ,例如:

  <...>   development  true     org.springframework.boot spring-boot-maven-plugin   development          

您可以运行以下命令以使用Spring Boot和Maven development配置文件:

 mvn spring-boot:run -Pdevelopment 

如果您希望能够将任何Spring Boot配置文件映射到具有相同配置文件名称的Maven配置文件,则可以定义单个Maven配置文件,并在检测到存在Maven属性时启用该配置文件。 在运行mvn命令时,此属性是您需要指定的单个属性。
该配置文件看起来像:

   spring-profile-active   my.active.spring.profiles      org.springframework.boot spring-boot-maven-plugin   ${my.active.spring.profiles}       

您可以运行以下命令来使用Spring Boot和Maven development配置文件:

 mvn spring-boot:run -Dmy.active.spring.profiles=development 

要么 :

 mvn spring-boot:run -Dmy.active.spring.profiles=integration 

要么 :

  mvn spring-boot:run -Dmy.active.spring.profiles=production 

所以……

这种配置是有意义的,因为您依赖于my.active.spring.profiles属性的通用Maven配置文件,该属性被传递以执行某些任务或重视某些事情。
例如,我使用这种方式配置一个通用的Maven配置文件,该配置文件打包应用程序并构建特定于所选环境的docker镜像。