首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

怎么用 maven 同时 install jar 和 war

2013-01-06 
如何用 maven 同时 install jar 和 war背景: 项目在一个super pom下,有多个平行module,在各级依赖中,有一

如何用 maven 同时 install 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 的 jar、war、ear、pom 等install到本地repository (此动作是自动完成,有几个就install 几个,无需配置

?

具体操作:

在pom中加入 maven-jar-plugin 2.3.1

?

  1. <plugin> <groupId>org.apache.maven.plugins</groupId>
  2. <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version>
  3. <executions> <execution>
  4. <id>my-jar</id> <phase>package</phase>
  5. <goals> <goal>jar</goal>
  6. </goals> <configuration>
  7. <classifier>api</classifier> </configuration>
  8. </execution> </executions>
  9. </plugin>
  10. ?

  11. ?

  12. 其中要注意的是,声明 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 中,不会产生上述问题。

?

?

?

引用:

?

<dependency>
??????????? <groupId>com.my</groupId>
??????????? <artifactId>my-jar</artifactId>
??????????? <classifier>api</classifier>
??????????? <version>${my.version}</version>
??????????? <type>jar</type>
??????? </dependency>

?

?

后记:

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

热点排行