当前位置:首页 > 资讯 > info6 > 正文

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

发表于: 2017-02-23 ? 作者:chen_fly2011 ? 来源:转载 ? 浏览:
摘要: ?项目背景:项目在一个superpom工程下,有多个平行module,在各级依赖中,有一个module在pom中定义packagewar,但是开发阶段,只需要其中的jar包来使用。如果一直使用其war包来开发调试,mavenoverlay会占用较多时间。于是新的需求就是:将这个module同时打包jar和war并intall到本地repository中。开发阶段就用jar,部署阶段用war。?解决

?

项目背景:

项目在一个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.pluginsgroupId>

??? <artifactId>maven-jar-pluginartifactId>

??? <version>2.3.1version>

??? <executions>

?????? <execution>

?????????? <id>my-jarid>

?????????? <phase>packagephase>

?????????? <goals>

????????????? <goal>jargoal>

?????????? goals>

?????????? <configuration>

????????????? <classifier>apiclassifier>

?????????? 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 来达成。?

?

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

版权所有 IT知识库 CopyRight ? 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号