我有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引导配置文件?


当前回答

这里有两种方法

使用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

然后运行

在我的情况下,我在IntelliJ的VM选项中使用了下面的配置,它不是选择本地配置,但在IntelliJ重新启动后,它从IntelliJ中选择配置细节,服务开始运行。

-Dspring.profiles.active=local

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

你好,当我试图激活配置文件在编辑配置与spring.profiles。Active =local它不起作用 当我启动项目时,我有这个错误:

考虑以下几点: 如果你想要一个嵌入式数据库(H2, HSQL或Derby),请把它放在类路径中。 如果要从特定概要文件加载数据库设置,则可能需要激活它(概要文件spring.profiles。Active =本地当前是活动的)。

它不接收我的本地文件

随着Spring Boot的发展,它似乎已经改变了读取VM选项的方式。这里有一些方法来尝试当你在Intellij中启动一个应用程序,并想要激活一些配置文件:

1. 修改虚拟机选项

在“运行”中打开“编辑配置”,在“虚拟机选项”中添加:-Dspring.profiles.active=local

它实际上适用于我的Spring Boot v2.0.3项目。RELEASE和Spring v5.0.7。RELEASE,但不是Spring Boot v2.1.1的另一个项目。RELEASE和Spring v5.1.3.RELEASE。

此外,当使用Maven或JAR运行时,人们会提到:

mvn spring-boot:run -Drun.profiles=dev

or

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

(请看这里:如何使用Spring Boot配置文件)

2. 传递JVM参数

在某个地方提到,如果您指定一些JVM选项,Spring将改变启动应用程序进程的方式;它会分叉另一个进程,并且不会传递它接收到的参数,所以这不起作用。传递参数给它的唯一方法是:

mvn spring-boot:run -Dspring-boot.run.jvmArguments="..."

同样,这是针对Maven的。 https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/run-debug.html

3.设置(应用程序)环境变量

对我来说,第二个项目的工作是设置环境变量,正如上面的一些回答所提到的:“编辑配置”-“环境变量”,以及:

SPRING_PROFILES_ACTIVE=local