2016-09-28 71 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' } 
相關問題