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

来源:互联网 发布:js 地球3d旋转动画 编辑:程序博客网 时间:2024/05/01 12:43

 

项目背景:

项目在一个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 jarwar同时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 来达成。 

 

原创粉丝点击