默認情況
- maven認為src/main/java只是java的源代碼路徑,只會把
.java
為后綴的文件進行打包 - resources目錄下的文件始終都會打包進jar包或war包
問題一:XML文件放在【src/main/java】目錄,不會被打包
原因:
當使用Mybatis時,把xml文件放在與mapper文件同一目錄(如:src/main/java/top/testops/mapper),而maven默認不會打包src/main/java
下的非.java
后綴的文件。
解決方案:
在pom.xml
文件中,添加代碼:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
問題二:【src/main/resources】目錄下的文件不會被打包
表現:
當pom.xml
添加了上述配置后,再進行打包,會發現:
src/main/java
的xml文件會被一起打包src/main/resources
目錄下的文件不會被打包
原因:
pom.xml
添加了上述配置后,會覆蓋默認的邏輯,令Maven不會打包resources目錄下的文件
解決方案:
在pom.xml
文件中,修改<resources>
為:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.yml</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.jpg</include>
<include>**/*.ttf</include>
<include>**/*.xml</include>
</includes>
<excludes>
<exclude>**/*.yml</exclude>
</excludes>
</resource>
</resources>
</build>
解釋:
<directory>
:該規則適用的目錄。<include>
:能匹配上的,會進行打包。<exclude>
:能匹配上的,不會進行打包。與<include>
沖突時,以<exclude>
為准,即不會進行打包。**/*.yml
:該寫法是為了保證各級子目錄下的資源文件被打包。如過只寫*.yml
,則表示只有src/main/resources
一級目錄下,以yml
為后綴的文件會被打包