Maven:打包后缺少資源文件


默認情況

  • 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為后綴的文件會被打包


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM