build-helper-maven-plugin 配置多 source resource 文件
http://gaolixu.iteye.com/blog/571216
1. 配置項目的pom文件(Maven配置文件)
1.1 Maven 默認的源文件夾及資源文件夾配置
?
Maven 默認的源文件夾及資源文件夾的配置代碼如下:
Xml代碼 ?
- <build>??
- ???... ??
- ???<?sourceDirectory?>?src/main/java?</?sourceDirectory?>??
- ???<?testSourceDirectory?>?src/test/java?</?testSourceDirectory?>??
- ???<?resources?>??
- ???????<?resource?>??
- ??????????<?directory?>?src/main/resources?</?directory?>??
- ???????</?resource?>??
- ???</?resources?>??
- ???<?testResources?>??
- ???????<?testResource?>??
- ??????????<?directory?>?src/test/resources?</?directory?>??
- ???????</?testResource?>??
- ???</?testResources?>??
- ???... ??
- </build>??
<build> ... < sourceDirectory > src/main/java </ sourceDirectory > < testSourceDirectory > src/test/java </ testSourceDirectory > < resources > < resource > < directory > src/main/resources </ directory > </ resource > </ resources > < testResources > < testResource > < directory > src/test/resources </ directory > </ testResource > </ testResources > ... </build>
?
在 eclipse 下,項目源文件夾及資源文件夾展現成這樣:
?
?
1.2 配置多個資源文件夾
從上面 Maven 的默認配置來看,源文件夾和測試源文件夾都只能配置一個,要配置多個源文件夾比較困難。這里我們先展示如何配置多個資源文件夾。
有人會認為,在 eclipse 下將這些文件夾都設置為源文件夾不就 OK 了嗎?其實不然, Maven 在構建的時候并不會去讀取任何 IDE 的配置信息,所以他不會知道我們在 eclipse 下指定的源文件夾,也不會將這些源文件夾下的代碼編譯打包。
配置多個資源文件夾的代碼:
Xml代碼 ?
- <build>??
- ???... ??
- ????<?resources?>??
- ???????<?resource?>??
- ??????????<?directory?>?src/main/resources?</?directory?>??
- ???????</?resource?>??
- ???????<?resource?>??
- ??????????<?directory?>?src/labs/resources?</?directory?>??
- ???????</?resource?>??
- ???</?resources?>??
- ???... ??
- </build>??
<build> ... < resources > < resource > < directory > src/main/resources </ directory > </ resource > < resource > < directory > src/labs/resources </ directory > </ resource > </ resources > ... </build>
?
配置好以后, IDE ( eclipse )不會識別我們的配置,我們需要更新項目的配置:
?
更新后, 在 eclipse 下項目源文件夾及資源文件夾展現成這樣(多了一個資源文件夾):
?
?
?
1.3 配置讀取源文件夾里的資源文件
為了讓 Maven 能夠從源文件夾下讀取資源文件(或將所有資源文件配置到源文件夾下),我們可以這樣配置:
Xml代碼 ?
- <build>??
- ???... ??
- ???<?resources?>??
- ???????<?resource?>??
- ??????????<?directory?>?src/main/resources?</?directory?>??
- ???????</?resource?>??
- ???????<?resource?>??
- ??????????<?directory?>?src/labs/resources?</?directory?>??
- ???????</?resource?>??
- ???????<?resource?>??
- ??????????<?directory?>?src/main/java?</?directory?>??
- ??????????<?includes?>??
- ??????????????<?include?>?**/*.hbm.xml?</?include?>??
- ??????????</?includes?>??
- ???????</?resource?>??
- ???????<?resource?>??
- ??????????<?directory?>?src/labs/java?</?directory?>??
- ??????????<?includes?>??
- ??????????????<?include?>?**/*.hbm.xml?</?include?>??
- ??????????</?includes?>??
- ???????</?resource?>??
- ???</?resources?>??
- ???... ??
- </build>??
<build> ... < resources > < resource > < directory > src/main/resources </ directory > </ resource > < resource > < directory > src/labs/resources </ directory > </ resource > < resource > < directory > src/main/java </ directory > < includes > < include > **/*.hbm.xml </ include > </ includes > </ resource > < resource > < directory > src/labs/java </ directory > < includes > < include > **/*.hbm.xml </ include > </ includes > </ resource > </ resources > ... </build>
?
這樣,不僅 src/main/resources 和 src/labs/resources 這兩個目錄下的文件會作為資源文件被打包, src/main/java 和 src/labs/java 目錄下的所有 .hbm.xml 文件也都會作為資源文件被打包。否則, Maven 構建時不會打包這兩個目錄下的 .hbm.xml 文件,導致運行時因為找不到資源文件而拋異常。
?
?
1.4 配置多個源文件夾
前面講過, Maven 默認只支持一個源文件夾,為了給項目配置多個源文件夾,我們需要用到一個 Maven 插件,目的是在 Maven 構建生命周期內為項目添加源文件夾:
Xml代碼 ?
- <build>??
- ????... ??
- ????<plugins>??
- ????????...? ??
- ????????<!--?build-helper-maven-plugin,?設置多個源文件夾?-->??
- ????????<plugin>??
- ????????????<groupId>org.codehaus.mojo</groupId>??
- ????????????<artifactId>build-helper-maven-plugin</artifactId>??
- ????????????<version>1.4</version>??
- ????????????<executions>??
- ????????????????<execution>??
- ????????????????????<id>add-source</id>??
- ????????????????????<phase>generate-sources</phase>??
- ????????????????????<goals>??
- ????????????????????????<goal>add-source</goal>??
- ????????????????????</goals>??
- ????????????????????<configuration>??
- ????????????????????????<sources>??
- ????????????????????????????<source>${basedir}/src/labs/java</source>??
- ????????????????????????????<!--?我們可以通過在這里添加多個source節點,來添加任意多個源文件夾?-->??
- ????????????????????????</sources>??
- ????????????????????</configuration>??
- ????????????????</execution>??
<build> ... <plugins> ... <!-- build-helper-maven-plugin, 設置多個源文件夾 --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>add-source</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${basedir}/src/labs/java</source> <!-- 我們可以通過在這里添加多個source節點,來添加任意多個源文件夾 --> </sources> </configuration> </execution>
Xml代碼 ?
- ??
Xml代碼 ?
- 還可以加resources:????????????????????????????????????<execution>??
- ????????????????????????<id>add-resource</id>??
- ????????????????????????<phase>generate-sources</phase>??
- ????????????????????????<goals>??
- ????????????????????????????<goal>add-test-resource</goal>??
- ????????????????????????</goals>??
- ????????????????????????<configuration>??
- ????????????????????????????<resources>??
- ????????????????????????????????<?resource?>??
- ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????<?directory?>${basedir}?src/labs/resource?</?directory?>??
- ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????<?/resource?>??
- ??????????????????????????????????????????????????????????????????????????????????????????????????????????</resources>??
- ????????????????????????</configuration>??
- ????????????????????</execution>??
- ??
- ????????????????</executions>??
- ????????????</plugin>??
- ????????????...? ??
- ????????</plugins>??
- ????????...? ??
- ????</build>??
還可以加resources: <execution> <id>add-resource</id> <phase>generate-sources</phase> <goals> <goal>add-test-resource</goal> </goals> <configuration> <resources> < resource > < directory >${basedir} src/labs/resource </ directory > < /resource > </resources> </configuration> </execution> </executions> </plugin> ... </plugins> ... </build>
更新項目配置(操作同2.2)后,在eclipse下項目源文件夾及資源文件夾展現成這樣(多了一個源文件夾):
?
?
-------------------------------------------
http://mojo.codehaus.org/build-helper-maven-plugin/usage.html
http://mojo.codehaus.org/build-helper-maven-plugin/
Maven默認只允許指定一個主Java代碼目錄和一個測試Java代碼目錄,雖然這其實是個應當盡量遵守的約定,但偶爾你還是會希望能夠指定多個源碼目錄(例如為了應對遺留項目),build-helper-maven-plugin的add-source目標就是服務于這個目的,通常它被綁定到默認生命周期的generate-sources階段以添加額外的源碼目錄。需要強調的是,這種做法還是不推薦的,因為它破壞了 Maven的約定,而且可能會遇到其他嚴格遵守約定的插件工具無法正確識別額外的源碼目錄。
build-helper-maven-plugin的另一個非常有用的目標是attach-artifact,使用該目標你可以以classifier的形式選取部分項目文件生成附屬構件,并同時install到本地倉庫,也可以deploy到遠程倉庫。
http://mojo.codehaus.org/build-helper-maven-plugin/usage.html
總結
以上是生活随笔為你收集整理的build-helper-maven-plugin 配置多 source resource 文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微服务为什么选Spring Cloud
- 下一篇: Android的ADB工具使用