在對(duì)項(xiàng)目進(jìn)行maven打包時(shí),某些特殊文件的過(guò)濾一直存在問(wèn)題,終于有時(shí)間搞清楚了。
一般在項(xiàng)目中,分為以下兩個(gè)部分:
- 代碼文件:src/main/java
默認(rèn)打包規(guī)則是僅包含 *.class 字節(jié)碼文件,忽略其他格式。
- 資源文件:src/main/resources
默認(rèn)打包規(guī)則是包含全部文件。
之前的做法
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.psd</exclude>
</excludes>
</plugin>
可以看到是利用maven-jar-plugin插件來(lái)進(jìn)行文件過(guò)濾的
實(shí)際上也確實(shí)達(dá)到了預(yù)期效果
但如果代碼文件中也想包含除了class以外的其他文件,嘗試添加 <include> 時(shí),卻意外的發(fā)現(xiàn)連 class 文件都被忽略了,多次嘗試也未成功。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.psd</exclude>
</excludes>
<includes>
<include>**/*.jw</include>
<include>**/*.json</include>
</includes>
</plugin>
正確的做法
利用 resources 標(biāo)簽:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.jw</include>
<include>**/*.json</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.psd</exclude>
</excludes>
</resource>
</resources>
打包結(jié)果完全符合預(yù)期!