2016-08-12 77 views
1

我可以看到許多關於特定環境屬性的帖子,但沒有一個能夠解決我的問題。春季引導,環境特定的屬性位置

我正在研究我的彈簧啓動應用程序,它將擁有兩個配置文件dev/live。

我想我的項目有以下結構:

--deployment 
    --dev 
    --myapp.properties 
    --live 
    --myapp.properties 
--src 
    --main 
    --java 
    --resources 
    --test 
    --java 

我知道,如果我有兩個application.properties在我的資源文件夾,說application-live.propertiesapplication-dev.properties我可以告訴Maven的哪一個來接在應用程序啓動時使用:

Dspring.profiles.active=profile_name 

但我不喜歡這個通用屬性文件的名稱。所以我找到了這種方式來告訴應用程序在/deployment/<profile>/的哪裏尋找配置文件特定的屬性。

我這樣做是使用Maven構建任務配置:

<build> 
    <resources> 
     <resource> 
      <directory>deployment/${environment}</directory> 
      <includes> 
       <include>*.properties</include> 
       <include>*.xml</include> 
      </includes> 
     </resource> 
    </resources> 
</build> 

這將會在deployment/<profile>尋找資源,包括他們。好的是,Maven找到了正確的環境屬性文件,但不幸的是它包含在target/classes/myapp.properties中,這對Spring Boot來說看起來是不可見的?我如何告訴Maven將它放在與application.properties相同的目錄下,或者我怎麼能告訴Spring Boot現在它在哪裏?

非常感謝!

回答

0

我該如何告訴Maven將它放在與application.propertiesor相同的目錄下或者如何告訴Spring Boot現在它在哪裏?

1)你並不需要,因爲它把配置文件到合適的位置來修改Maven的設置:target/classes是classpath的根目錄,因爲從這個目錄中的所有文件都複製到WAR的WEB-INF/classes目錄的你/ JAR文件。

2)要更改屬性文件的名稱,可以使用spring.config.name屬性,將其明確地作爲-Dspring.config.name=myapp傳遞或作爲環境變量SPRING_CONFIG_NAME=myapp傳遞。有關更多信息,請參閱官方文檔的Change the location of external properties of an application一章。

+0

如果我想擁有多個屬性文件,而不僅僅是一個,該怎麼辦?每種環境我都有一種類型。 –

+0

不支持多個'application.properties'文件。但是您可以在'application-properties'文件中的'application.properties'和其他配置文件特定參數中定義公共參數。 –

+0

好的,我決定去'application- {profile} .properties'解決方案。我在'/ deployment'下仍然有這些配置文件特定的屬性。謝謝。 –