2016-09-28 70 views
19

我有5个环境:从IntelliJ运行时,如何激活Spring Boot配置文件?

- 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 =本地

下VM选项运行配置。

既不工作。我不断看到启动时的INFO消息说:没有活动的概况集,回落到默认配置文件:默认

如果我使用Windows命令行中运行我的应用程序

gradle bootRun 

,但我第一次环境变量

set SPRING_PROFILES_ACTIVE=local 

然后一切正常。

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

+0

你为什么通过gradle在那里运行应用程序?使用运行配置不是10倍更方便吗?有一个字段,您可以设置配置文件以启用... –

+0

我正在使用IntelliJ中的运行配置,如上所述。它不工作。 – dleerob

+0

不,你不是。我在说的是“Spring Boot运行配置”运行 - >编辑配置>新建> Spring Boot。 –

回答

2

我最终加入以下到我的build.gradle:从运行的IntelliJ时bootRun

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

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

所以,现在,它默认为“本地”的个人资料。

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

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

0

在程序参数中设置-Dspring.profiles.active = local,不带引号。

+0

我已经从上面的问题中删除了引号。我实际上并没有使用引号,我只是试图准确地显示我在运行配置字段 – dleerob

+0

中的意思,你的意思是VM选项! –

3

可能的原因可能是因为你没有通过命令行参数到应用程序的主要方法。几周前我犯了同样的错误。

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

感谢您的回复和建议,但我传递参数。 – dleerob

+0

这解决了我的问题。 – jbarrameda

+0

这实际上解决了我的问题。出于某种原因,当我使用Gradle创建项目时,它并没有自动生成我的'Application'类,所以它从内存中手动生成。错过了'args'步骤,因此运行配置中的“活动配置文件”框不起作用 - 我必须在VM选项框中手动传递'-Dspring.profiles.active'。 –

31

如果你真正使用的春天开机运行配置(目前仅在旗舰版支持)可以很容易地预先配置在“活动配置文件”设置的配置文件。

enter image description here

+0

谢谢,我敢肯定,这将工作,但我没有使用Spring Boot运行配置,我使用没有“活动配置文件”字段的Gradle运行配置。我的gradle构建过滤器并修改了它复制到构建目录的一些属性文件,所以我正在使用Grade运行配置。 – dleerob

+0

不客气。希望你解决了这个问题,然后 –

+0

正如上面的答案所指出的那样:如果这不适合你,请确保你在'Application.main()'中传递'args',例如'SpringApplication.run(Application .class,args);' –

25

我走进编辑配置...

我加-Dspring.profiles.active =测试VM选项,然后重新运行该配置。它工作完美。

enter image description here

0

试试这个。按照以下步骤编辑您的build.gradle文件。

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