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'
        }
    }
}

上次修改於 2022-05-10