我有5个环境:

 - local (my development machine)
 - dev
 - qc
 - uat
 - live
 - staging

我想为每个环境使用不同的应用程序属性,因此我有以下属性文件,每个文件都有不同的数据源URL:

 - application.properties  (containing common properties)
 - application-local.properties
 - application-dev.properties
 - application-qc.properties
 - application-uat.properties
 - application-live.properties

我正在使用IntelliJ并在我的本地机器上使用Gradle插件中的bootRun运行我的应用程序。我将使用在所有运行Tomcat的其他环境中部署相同的应用程序war文件。

我试着补充:

——spring.profiles.active =当地

到脚本参数下的运行配置。

我试着添加

-Dspring.profiles.active =当地

虚拟机选项下的“运行”配置。

既不工作。我在启动时一直看到INFO消息说:没有活动配置文件设置,回落到默认配置文件:默认

如果我运行我的应用程序从windows命令行使用

gradle bootRun

但我先设置环境变量

set SPRING_PROFILES_ACTIVE=local

然后一切正常。

所以我的问题是,当从IntelliJ运行bootRun时,我如何激活我的本地spring引导配置文件?


当前回答

我使用的是Intellij社区版。 进入“运行/调试配置”> Runner选项卡>环境变量>单击“…”按钮。添加: SPRING_PROFILES_ACTIVE = local

spring.profiles.active

其他回答

您可以尝试使用上述方法激活配置文件

设置-Dspring.profiles。Active =local程序下参数。

这里有两种方法

使用gradle项目属性

在构建。gradle,添加

bootRun{
//https://github.com/spring-projects/spring-boot/pull/592#issuecomment-880263914
    if (project.hasProperty('profiles')) {
        environment SPRING_PROFILES_ACTIVE: profiles
    } else {
        def profiles = 'dev'
        environment SPRING_PROFILES_ACTIVE: profiles
    }
}

在intellij gradle配置中,根据您想要运行的环境,更改“-Pprofiles”中的值“test”

使用环境属性

关注@Hubert的回答https://stackoverflow.com/a/39749545/3333878

并将运行配置配置为

创建这样的文件属性

application.properties
application-dev.properties
application-prod.properties

然后运行

我最终在build.gradle中添加了以下内容:

bootRun {
  environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "local"
}

test {
  environment SPRING_PROFILES_ACTIVE: environment.SPRING_PROFILES_ACTIVE ?: "test"
}

所以现在当从IntelliJ运行bootRun时,它默认为“本地”配置文件。

在我们的其他环境中,我们将简单地在Tomcat中设置'SPRING_PROFILES_ACTIVE'环境变量。

我从这里的一个评论中得到了这个:https://github.com/spring-projects/spring-boot/pull/592