Spring Boot打包war包和設定檔
徹底釐清yaml的載入順序
Spring Boot打包war包和設定檔分離
如果只是想在打成jar包的時候單獨把設定檔分離出來
- Springboot讀取核心設定檔(application.properties)的優先順序為:
1. Jar(war)包同級目錄的config目錄
2. Jar(war)包同級目錄
3. classPath(即resources目錄)的config目錄
4. classpath目錄
-
要實現設定檔分離,只需要在編譯出來的jar檔的同級目錄創建一個config目錄,然後把設定檔複製到該目錄即可,運行時,會優先使用config目錄下的設定檔
-
war包同級目錄建直接放application.yml優先順序低於同級目錄下的config資料夾
- 注: 此時打包的yml配置其實還是在war包中,只是被優先順序更高的war包統計目錄的config資料夾或者application.ym覆蓋了
在打包時把設定檔排除
在打包的時候就把.properties,.yml,.xml幾種類型的設定檔都過濾掉了
- 在pom中加入:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.yml</exclude>
//<exclude>**/*.xml</exclude>
</excludes>
</resource>
</resources>
</build>
- gradlew
sourceSets {
main {
java {
srcDir 'src'
exclude '**/*.properties'
}
resources {
srcDir 'config'
}
}
}
- 更多關於gradlew打包可以參考: https://blog.qrtt1.io/posts/gradle-series-6-java-project/
上次修改於 2022-05-10