需求:
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
朔望魔刃 阅读(300)
评论(0) 编辑 收藏 所属分类:
java