随笔-95  评论-31  文章-10  trackbacks-0
需求:
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 朔望魔刃 阅读(271) 评论(0)  编辑  收藏 所属分类: java

只有注册用户登录后才能发表评论。


网站导航: