maven資源文件的相關(guān)配置
構(gòu)建Maven項(xiàng)目的時(shí)候,如果沒(méi)有進(jìn)行特殊的配置,Maven會(huì)默認(rèn)按照標(biāo)準(zhǔn)的目錄結(jié)構(gòu)查找和處理各種類型文件。
src/main/java和src/test/java
這兩個(gè)目錄中的所有*.java文件會(huì)分別在compile和test-compile階段被編譯,編譯結(jié)果分別放到了target/classes和targe/test-classes目錄中劫拗,但是這兩個(gè)目錄中的其他文件都會(huì)被忽略掉。如下圖:src/main/java/com/demo.xml文件在編譯時(shí)被忽略(src/test/java截圖略)
image.png
src/main/resouces和src/test/resources
如上圖可看出這兩個(gè)目錄中的文件也會(huì)分別被復(fù)制到target/classes和target/test-classes目錄中矾克。
target/classes
打包插件默認(rèn)會(huì)把這個(gè)目錄中的所有內(nèi)容打入到j(luò)ar包或者war包中页慷。
資源文件的配置
資源文件是Java代碼中要使用的文件。代碼在執(zhí)行的時(shí)候會(huì)到指定位置去查找這些文件聂渊。前面已經(jīng)說(shuō)了Maven默認(rèn)的處理方式差购,但是有時(shí)候我們需要進(jìn)行自定義的配置。
有時(shí)候有些配置文件通常與.java文件一起放在src/main/java目錄(如mybatis或hibernate的表映射文件)汉嗽。有的時(shí)候還希望把其他目錄中的資源也復(fù)制到classes目錄中欲逃。
解決辦法
為了使JAR插件正確地捆綁資源,您可以在Pom.xml文件中,在<build></build>節(jié)點(diǎn)中配置resources節(jié)點(diǎn)
配置resources節(jié)點(diǎn)
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd">
<build>
...
<resources>
<resource>
<targetPath>/plexus</targetPath>
<filtering>false</filtering>
<directory>${basedir}/src/main/plexus</directory>
<includes>
<include>configuration.xml</include>
</includes>
<excludes>
<exclude>**/*.properties</exclude> <!-- **/ 為固定寫(xiě)法-->
</excludes>
</resource>
</resources>
<testResources>
...
</testResources>
...
</build>
</project>
- resources:是資源元素的列表饼暑,每個(gè)元素描述與此項(xiàng)目關(guān)聯(lián)的文件的內(nèi)容和位置稳析。
- targetPath:指定資源文件編譯后放置的目錄,根目錄是target/classes,如上則在目錄target/classes/plexus下。
- filtering:為真或假弓叛,表示是否要為此資源啟用篩選彰居。
- directory:此元素的值定義在何處找到資源。構(gòu)建的默認(rèn)目錄是${basedir}/src/main/resources撰筷。
- include:一組文件模式陈惰,指定要包含的文件作為指定目錄下的資源,使用*作為通配符。
- exclude:與include相同的結(jié)構(gòu)毕籽,但指定忽略哪些文件抬闯。
- testResources: testResources元素塊包含testResource元素。它們的定義類似于資源元素关筒,但在測(cè)試階段自然會(huì)使用它們溶握。