SpringBoot不同profile過濾配置文件

0. 前景

項目多數情況下,需要部署到不同環境中.使用maven打包,不做其它配置時,默認輸出的jar包中,包含所有的配置文件,這樣顯然不太合理,當不同的生產環境中,不希望存在其它的生產環境的配置文件,可採用如下配置

1.pom文件中追加profile配置
<!--不同開發環境配置-->
<profiles>
   <profile>
       <id>dev</id>
       <properties>
       		<!--pa爲自定義的屬性,可在application.yml文件中引用-->
           <pa>dev</pa>
       </properties>
       <activation>
           <!--不加參數默認的profile-->
           <activeByDefault>true</activeByDefault>
       </activation>
   </profile>
   <profile>
       <id>test</id>
       <properties>
           <pa>test</pa>
       </properties>
   </profile>
<profiles>
<!--節點層級爲project>profiles-->
2.pom文件中build節點下追加資源過濾選項
 <resources>
       <!--先忽略所有配置文件,後進行需要的配置文件的追加-->
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <excludes>
                <exclude>**/application-*.yml</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
            	<!--此處的pa代表的是profile中自定義的屬性-->
                <include>**/application-${pa}.yml</include>
            </includes>
        </resource>
 </resources>
3.application.yml文件中引用profile中定義參數
spring:
  profiles:
   # profile中定義的pa屬性
    active: @pa@
4.手動打包指定環境
mvn clean package -Dmaven.test.skip=true -Pdev
  • -Dmaven.test.skip=true 表示跳過測試,可提高打包速度
  • -P後面的參數爲profile的名稱
5.開發狀態下切換不同環境
  1. IDEA側邊欄Maven->Profiles勾選需要的環境點擊路徑
  2. 項目目錄下,終端中執行命令mvn -DskipTests=true clean install
  3. 首次切換需要進行如下操作,後續調試運行無需更改
PS
  • 如上配置後,直接更改spring.profiles.active無效,且項目運行會報錯
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章