需求:
1:有時候我們需要對外只提供API接口和DTO,但是整個項目還包括service、dao等,所以我們只想打包一個xxx-api.jar以及一個完整的xxx.jar并且需要install到本地倉庫以及私服,以及打包一個項目運行的zip文件,包括conf、lib、logs ,那么該怎么辦?
答:先使用第一個插件,將API接口和DTO提取成單獨的源文件包目錄 src/main/api
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>add-api-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources> <source>src/main/api</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
其次使用第二個插件,進行打包,里面關鍵是
<classifier>api</classifier>
表示再次打包以api后綴結尾,如果不寫改行,那么不會進行二次打包
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<includes>
<include>**/api/**</include>
</includes>
<!-- 要求再次生成一個jar包以api后綴結尾,見官網http://maven.apache.org/plugins/maven-jar-plugin/examples/attached-jar.html -->
<classifier>api</classifier>
</configuration>
</execution>
</executions>
</plugin>
接著執行install就會生成兩個包文件一個xxxx.jar、一個xxxx-api.jar。
最后引用:
<dependency>
<groupId>xxxx</groupId>
<artifactId>xxxx</artifactId>
<classifier>api</classifier>
<version>0.0.1-SNAPSHOT</version>
</dependency>
關鍵還是
<classifier>api</classifier> 表明引用后綴名為api的jar,因為他們有相同的pom,就靠這個區分。
posted on 2015-05-13 18:14
朔望魔刃 閱讀(304)
評論(0) 編輯 收藏 所屬分類:
java