本文適用於開發環境下需要打包專案至生產環境,避免開發環境的組態檔洩露。
作用:1. 手動調節執行時的不同環境 2. 打包時可以不會有其它環境的檔案
注:每次換環境前(打包前)記得手動clean清楚,因為idea不會在換環境後自動清除另一個環境的檔案
在pom檔案中加
在依賴
<!--分別設定開發,生產環境-->
<profiles>
<!-- 開發環境 -->
<profile>
<id>dev</id>
<activation>
<!--設定預設為dev環境-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<environment>dev</environment>
</properties>
</profile>
<!-- 生產環境 -->
<profile>
<id>prod</id>
<activation>
<!--不設定該環境為預設環境-->
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<environment>prod</environment>
</properties>
</profile>
</profiles>
在
<resources>
<!--排除組態檔-->
<resource>
<directory>src/main/resources</directory>
<!--先排除所有的組態檔-->
<excludes>
<!--使用萬用字元,當然可以定義多個exclude標籤進行排除-->
<exclude>application*.yaml</exclude>
</excludes>
</resource>
<!--根據啟用條件引入打包所需的設定和檔案-->
<resource>
<directory>src/main/resources</directory>
<!--引入所需環境的組態檔-->
<filtering>true</filtering>
<includes>
<include>application.yaml</include>
<!--根據maven選擇環境匯入組態檔-->
<include>application-${environment}.yaml</include>
</includes>
</resource>
</resources>
application.yaml
、application-dev.yaml
、application-prod.yaml
//application.yaml
//方法一:弊端(打包時會把dev 和 prod環境的組態檔都會打包),無法真正做到多環境開發
spring:
profiles:
active: dev //這裡是寫組態檔命名-後的單詞
//方法二:通過maven來告訴springboot應該打包哪個環境的檔案(優點:不會包含其他環境的組態檔)
spring:
profiles:
active: '@environment@' #這裡的單詞要手動打,等有提示才行,不然會失敗。注意YAML組態檔需要加單引號,否則會報錯。
//application-dev.yaml
server:
port: 8080
//application-prod.yaml
server:
port: 80
如果有設定紀錄檔列印,想要不同環境紀錄檔列印不同需要去紀錄檔列印的組態檔改這些:把上面上部分改成下部分
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
------------------------------------------------------------------
<!--dev環境下的紀錄檔輸出方式-->
<springProfile name="dev">
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</springProfile>
<!--prod環境下的紀錄檔輸出方式-->
<springProfile name="prod">
<root level="INFO">
<appender-ref ref="FILE"/>
</root>
</springProfile>