maven pom.xml 配置說明
阿新 • • 發佈:2019-01-21
構建Maven專案的時候,如果沒有進行特殊的配置,Maven會按照標準的目錄結構查詢和處理各種型別檔案。
src/main/java和src/test/java
這兩個目錄中的所有*.java檔案會分別在comile和test-comiple階段被編譯,編譯結果分別放到了target/classes和targe/test-classes目錄中,但是這兩個目錄中的其他檔案都會被忽略掉。
src/main/resouces和src/test/resources
這兩個目錄中的檔案也會分別被複制到target/classes和target/test-classes目錄中。
target/classes
打包外掛預設會把這個目錄中的所有內容打入到jar包或者war包中。
Maven專案的標準目錄結構
- src
- main
- java 原始檔
- resources 資原始檔
- filters 資源過濾檔案
- config 配置檔案
- scripts 指令碼檔案
- webapp web應用檔案
- test
- java 測試原始檔
- resources 測試資原始檔
- filters 測試資源過濾檔案
- it 整合測試
- assembly assembly descriptors
- site Site
- main
- target
- generated-sources
- classes
- generated-test-sources
- test-classes
- xxx.jar
- pom.xml
- LICENSE.txt
- NOTICE.txt
- README.txt
資原始檔的配置
資原始檔是Java程式碼中要使用的檔案。程式碼在執行的時候會到指定位置去查詢這些檔案。前面已經說了Maven預設的處理方式,但是有時候我們需要進行自定義的配置。
有時候有些配置檔案通常與.java檔案一起放在src/main/java目錄(如mybatis或hibernate的表對映檔案)。有的時候還希望把其他目錄中的資源也複製到classes目錄中。這些情況下就需要在Pom.xml檔案中修改配置了。
可以有兩種方法:
- 一是在<build>元素下新增<resources>進行配置。
- 另一種是在<build>的<plugins>子元素中配置maven-resources-plugin等處理資原始檔的外掛。
配置resouces節點 <build>
.......
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
</excludes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
......
</build>
.......
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
</excludes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
......
</build>
配置資源處理外掛
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-xmls</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
另一個外掛也能完成相同的功能
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-resource</id>
<phase>generate-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
打包時檔案相關的配置
打包時target/classes目錄中的資原始檔會和class位元組碼一起被打進jar包或war包中。有時候預設的情況不能完全滿足需求,如target/classes目錄中的一些檔案不希望打入jar包中,就需要額外配置maven-jar-plugin外掛。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<excludes>
<exclude>*.properties</exclude>
</excludes>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>xxxxxx.ConsoleLauncher</mainClass>
</manifest>
</archive>
</configuration>
</plugin>