maven打包的resource配置問題

1、簡介html

構建Maven項目的時候,若是沒有進行特殊的配置,Maven會按照標準的目錄結構查找和處理各類類型文件。java

● src/main/java和src/test/java
這兩個目錄中的全部*.java文件會分別在comile和test-comiple階段被編譯,編譯結果分別放到了target/classes和targe/test-classes目錄中,可是這兩個目錄中的其餘文件都會被忽略掉。mybatis

● src/main/resouces和src/test/resources
這兩個目錄中的文件也會分別被複制到target/classes和target/test-classes目錄中。
● target/classes
打包插件默認會把這個目錄中的全部內容打入到jar包或者war包中。app

 

以下所示:maven

 

 

 

 

 

 

2、Maven項目的標準目錄結構ui

 

 

 

 

 

 

 

3、打包時資源文件的配置spa


3.一、打包src/main/java目錄下的xml.net

通常狀況下,咱們用到的資源文件(各類xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包時,maven能把這些資源文件打包到相應的jar或者war裏。插件

有時候,好比mybatis的mapper.xml文件,咱們習慣把它和Mapper.java放一塊兒,都在src/main/java下面,這樣利用maven打包時,就須要修改pom.xml文件,來把mapper.xml文件一塊兒打包進jar或者war裏了,不然,這些文件不會被打包的。(maven認爲src/main/java只是java的源代碼路徑)命令行

下面經過一個簡單的示例來講明:

 

項目結構以下所示,有兩個UserMaper.xml文件,所在目錄不一樣

 

 

 

 

 

默認狀況下,在POM.XML目錄下執行: mvn clean package 打包命令在target\classes目錄下不會把UserMapper.xml打包到下mapper目錄下

而resources目錄下的文件始終都會打包進jar包或war包

這個時候使用mybatis就會出一些問題,找不到UserMapper所對應的xml文件解決方法有以下幾種:

(1)配置POM.XML的resource把xml也打包到mapper目錄下

 

 

 

 


<build>
      <!-- 資源目錄 -->
     <resources>
           <resource>
                   <!-- 設定主資源目錄 -->
                         <directory>src/main/java</directory>
                                   <!-- maven default生命週期,process-resources階段執行maven-resources-plugin插件的resources目標處理主資源目下的資源文件時,只處理以下配置中包含的資源類型 -->
                                     <includes>
                                        <include>**/*.xml</include>
                                               </includes>
<!-- maven default生命週期,process-resources階段執行maven-resources-plugin插件的resources目標處理主資源目下的資源文件時,不處理以下配置中包含的資源類型(剔除下以下配置中包含的資源類型)-->
                           <excludes>
                               <exclude>**/*.yaml</exclude>
                         </excludes>

<!-- maven default生命週期,process-resources階段執行maven-resources-plugin插件的resources目標處理主資源目下的資源文件時,指定處理後的資源文件輸出目錄,默認是${build.outputDirectory}指定的目錄-->
                          <!--<targetPath>${build.outputDirectory}</targetPath> -->

                    <!-- maven default生命週期,process-resources階段執行maven-resources-plugin插件的resources目標處理主資源目下的資源文件時,是否對主資源目錄開啓資源過濾 -->
                  <filtering>true</filtering>
           </resource>
    </resources>
</build>

 

(2)maven-resources-plugin插件

爲了使項目結構更爲清晰,Maven區別對待Java代碼文件和資源文件,maven-compiler-plugin用來編譯Java代碼,maven-resources-plugin則用來處理資源文件。

默認的主資源文件目錄是src/main/resources,不少用戶會須要添加額外的資源文件目錄,這個時候就能夠經過配置maven-resources-plugin來實現。

此外,資源文件過濾也是Maven的一大特性,你能夠在資源文件中使用${propertyName}形式的Maven屬性,而後配置maven-resources-plugin開啓對資源文件的過濾,以後就能夠針對不一樣環境經過命令行或者Profile傳入屬性的值,以實現更爲靈活的構建。

 

 

(3)build-helper-maven-plugin插件

 

 

3.二、src/main/resources目錄下的xml等資源文件不被打包


 

 

 

 


編譯好以後,會在target目錄下生成conf目錄而且把resources目錄下的全部文件都自動拷貝到target/conf/目錄下

 

原文連接:https://blog.csdn.net/u011781521/article/details/79052725

參考: https://www.cnblogs.com/pixy/p/4798089.html

相關文章
相關標籤/搜索