从IntelliJ运行时如何激活Spring Boot配置文件?

时间:2016-09-28 05:44:24

标签: spring intellij-idea gradle spring-boot

我有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

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

我尝试过添加:

  

- spring.profiles.active =本地

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

我尝试过添加

  

-Dspring.profiles.active =本地

到VM选项下的运行配置。

都没有工作。我一直看到启动时的INFO消息说:没有活动的配置文件集,回退到默认配置文件:默认

如果我使用

从Windows命令行运行我的应用程序
gradle bootRun

但我首先设置了环境变量

set SPRING_PROFILES_ACTIVE=local

然后一切正常。

所以我的问题是,从IntelliJ运行bootRun时如何激活本地弹簧启动配置文件?

13 个答案:

答案 0 :(得分:100)

我进入了编辑配置......

我将>head(Data) Date Value 6/4/2017 180 6/4/2017 300 6/4/2017 120 6/4/2017 340 6/5/2017 300 添加到VM选项,然后重新运行该配置。它运作得很好。

答案 1 :(得分:62)

如果您实际使用弹簧启动运行配置(目前仅在Ultimate Edition中支持),则可以轻松地在“活动配置文件”设置中预配置配置文件。

enter image description here

答案 2 :(得分:6)

我最后将以下内容添加到build.gradle:

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

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

所以现在从IntelliJ运行bootRun时,它默认为" local"轮廓。

在我们的其他环境中,我们只需设置' SPRING_PROFILES_ACTIVE' Tomcat中的环境变量。

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

答案 3 :(得分:5)

可能的原因可能是您没有将命令行参数传递给应用程序main方法。几个星期前我犯了同样的错误。

public static final void main(String... args) {
    SpringApplication.run(Application.class, args);
}

答案 4 :(得分:2)

我使用Intellij社区版。 转到“运行/调试配置”>“运行器”选项卡>“环境变量”>单击按钮“ ...”。加: SPRING_PROFILES_ACTIVE =本地

spring.profiles.active

答案 5 :(得分:2)

尝试在您的build.gradle中添加此命令

enter image description here

因此要运行,请配置该形状:

enter image description here

答案 6 :(得分:2)

在我的情况下,我在IntelliJ的VM选项中使用了以下配置,它没有选择本地配置,但是在重新启动IntelliJ之后,它从IntelliJ选择了配置详细信息并启动了服务运行。

-Dspring.profiles.active=local

答案 7 :(得分:1)

Spring Boot似乎已随着其发展而改变了读取VM选项的方式。当您在Intellij中启动应用程序并希望激活某些配置文件时,可以尝试以下方法:

1。更改虚拟机选项

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

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

另外,当与Maven或JAR一起运行时,人们提到了这一点:

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

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

(请参见此处:how to use Spring Boot profiles

2。传递JVM参数

在某处提到,如果您指定一些JVM选项,Spring会更改启动应用程序进程的方式。它分叉另一个进程,并且不会传递收到的arg,因此这不起作用。将args传递给它的唯一方法是:

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

答案 8 :(得分:0)

试试这个。编辑build.gradle文件,如下所示。

ext { profile = project.hasProperty('profile') ? project['profile'] : 'local' }

答案 9 :(得分:0)

对于Spring Boot 2.1.0及更高版本,您可以使用

mvn spring-boot:run -Dspring-boot.run.profiles=foo,bar

答案 10 :(得分:0)

Replace your profile name with BE

您可以尝试上述方法来激活个人资料

答案 11 :(得分:0)

因此恢复...

如果您拥有IntelliJ Ultimate,则正确答案是Daniel Bubenheim

提供的答案。

但是,如果不这样做,请在“运行”->“编辑配置”中创建,然后在“配置”选项卡中添加下一个环境变量:

SPRING_PROFILES_ACTIVE=profilename

要执行jar,请执行以下操作:

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

答案 12 :(得分:-1)

在程序参数下设置-Dspring.profiles.active=local