關(guān)于Maven打包(Jar)時(shí)文件過(guò)濾的正確做法

在對(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ù)期!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容