您的位置:首页 > 其它

Maven项目中如何同时Install成JAR和WAR包

2012-11-03 16:32 330 查看
 

项目背景:

项目在一个super pom工程下,有多个平行module,在各级依赖中,有一个module
在 pom
中定义 package war,但是开发阶段,只需要其中的jar包来使用。如果一直使用其
war 包来开发调试,maven overlay
会占用较多时间。于是新的需求就是:将这个module
同时打包 jar
和 war
并 intall
到本地 repository
中。开发阶段就用jar,部署阶段用war。

 解决思路 :

使用 maven-jar-plugin
,定义在 phase package
阶段同步打 jar
包;然后在 maven install
时,maven
会将这个 module
的 jar、war同时install到本地repository
(此动作是自动完成,有几个就install
几个,无需配置) 

解决方案:

在pom中加入
maven-jar-plugin 2.3.1

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.1</version>
    <executions>
       <execution>
           <id>my-jar</id>
           <phase>package</phase>
           <goals>
              <goal>jar</goal>
           </goals>
           <configuration>
              <classifier>api</classifier>
           </configuration>
       </execution>
    </executions>
</plugin>

其中要注意的是,声明 classifier
为任何你需要的字符。

 因为这样可以避免一个问题:如果在 pom
中定义 package
为 war,运行
maven package 后,在项目 target
目录下成功产生 XX.jar
和 XX.war
,但运行 maven install,却只把
XX.jar 安装到 repositoy
中的XX.war,其中内容仅是
jar 包内容,而XX.war
就不install
到 repositoy
了。加入 classifier
后产生: XX-api.jar
和 XX.war,那么maven
install 会将这两个文件同时安装到本地 repository
中,不会产生上述问题。

后记:

同样的道理,如果项目定义 package jar,同时需要打包
jar 和 war,应该也可以搭配使用
maven-war-plugin 来达成。 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: