在開發maven項目時,一般都會把配置檔案放到src/main/resources目錄下,針對這個目錄,maven的resources對其進行單獨的配置。
這類的文章推薦看下這兩篇:
maven的pom.xml中resources标簽介紹 - 安小樂 - OSCHINA - 中文開源技術交流社群
https://my.oschina.net/anxiaole/blog/1613348Maven的pom.xml中resources标簽的用法_wenonepiece的部落格-CSDN部落格_pom.xml resources
https://blog.csdn.net/wenonepiece/article/details/112721380上述文章解答了我的大多數疑問,但依然有一些問題講的不清楚,故在此總結一下。
<build>
<!-- maven對resources資源的配置,一個resources标簽下可以有多個resource标簽 -->
<resources>
<resource>
<!--
需要配置的原資源目錄,${basedir}和${project.basedir}變量均指項目根目錄。
這裡的lib檔案夾,存在了項目依賴的三方jar和dll檔案
-->
<directory>${basedir}/src/main/resources/lib</directory>
<!--
目标目錄,即原資源目錄下的檔案編譯打包之後要放到哪裡去。
預設路徑 target/classes/,路徑字首 target/classes/,也就是說如果配置的是BOOT-INF/lib/,最終結果為target/classes/BOOT-INF/lib/
-->
<targetPath>BOOT-INF/lib/</targetPath>
<!-- 是否過濾,預設是false,這裡的過濾指的是,是否将原資源目錄下的配置檔案的${key}替換成對應的值 -->
<filtering>true</filtering>
<!--
如果你覺得原資源目錄範圍太大,你可以通過includes标簽來具體指定需要哪些檔案,或者通過
excludes标簽來具體指定需要排除那些檔案。兩個标簽都可以模糊比對
-->
</resource>
</resources>
</build>
注意事項
當你使用<resources>标簽配置自定義的配置檔案時,可能會導緻application.yml等原本的springboot預設配置檔案不生效了。
例如,下面是我項目需要用到的配置
<resources>
<resource>
<directory>${project.basedir}/lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<resource>
<directory>${project.basedir}/lib</directory>
<targetPath>../lib</targetPath>
</resource>
</resources>
測試的時候發現,自己的外部依賴檔案是打包進去了,但是springboot自帶的yml配置檔案确不生效了。是以,在你配置自定義的檔案之後,别忘了系統自帶的配置檔案。
<resources>
<resource>
<directory>${project.basedir}/lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<resource>
<directory>${project.basedir}/lib</directory>
<targetPath>../lib</targetPath>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>