Maven中一个War应用依赖另外一个WAR应用的解决方案
2017-06-02 17:02
281 查看
最近在做项目中,用Maven管理项目间的依赖关系,遇到一个问题,快折腾死了,不过初步试出来一种解决方案。在此把问题及解决方案描述一下,以资共享。
问题描述:有两个项目A和B,Dynamic Web Project。依赖关系是,B-->A,一种方式是利用maven-war-plugin的Overlay机制(例子可参见官网),但这种解决方案默认是将两个Web应用的资源进行合并,相关的class都会被复制到WEB-INF/classes下面,相关的JSP等资源也合并到一起。我的要求是A的class被独立打包成一个jar,在发布到应用服务器后存在于B应用的WEB-INF/lib下面,A应用的其他资源都不要。
处理思路:
一、A应用的POM处理
<?xml version="1.0" encoding="UTF-8"?>
<project ......">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx</groupId>
<version>0.0.1-SNAPSHOT</version>
<name>A-web</name>
<artifactId>A-web</artifactId>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<!--注意增加这两行,在打包时相关的类会被独立打成jar-->
<attachClasses>true</attachClasses>
<classesClassifier>api</classesClassifier>
</configuration>
<version>2.3</version>
<executions>
</executions>
</plugin>
</plugins>
</build>
</project>
打包完成后,包含A-web.war和a-web-api.jar及其他文件。
二、B应用的POM处理
<?xml version="1.0" encoding="UTF-8"?>
<project ...........>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx</groupId>
<version>0.0.1-SNAPSHOT</version>
<name>B</name>
<artifactId>B</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.xxx</groupId>
<artifactId>A-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
<classifier>api</classifier>
</dependency>
</dependencies>
</project>
注意以上的依赖中的type属性为jar,而不是默认的war。classifier的值api与A中的classesClassifier的值api要一致。
注:验证通过
转载自:http://www.cnblogs.com/silentjesse/p/5071965.html
问题描述:有两个项目A和B,Dynamic Web Project。依赖关系是,B-->A,一种方式是利用maven-war-plugin的Overlay机制(例子可参见官网),但这种解决方案默认是将两个Web应用的资源进行合并,相关的class都会被复制到WEB-INF/classes下面,相关的JSP等资源也合并到一起。我的要求是A的class被独立打包成一个jar,在发布到应用服务器后存在于B应用的WEB-INF/lib下面,A应用的其他资源都不要。
处理思路:
一、A应用的POM处理
<?xml version="1.0" encoding="UTF-8"?>
<project ......">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx</groupId>
<version>0.0.1-SNAPSHOT</version>
<name>A-web</name>
<artifactId>A-web</artifactId>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<!--注意增加这两行,在打包时相关的类会被独立打成jar-->
<attachClasses>true</attachClasses>
<classesClassifier>api</classesClassifier>
</configuration>
<version>2.3</version>
<executions>
</executions>
</plugin>
</plugins>
</build>
</project>
打包完成后,包含A-web.war和a-web-api.jar及其他文件。
二、B应用的POM处理
<?xml version="1.0" encoding="UTF-8"?>
<project ...........>
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx</groupId>
<version>0.0.1-SNAPSHOT</version>
<name>B</name>
<artifactId>B</artifactId>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>com.xxx</groupId>
<artifactId>A-web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
<scope>compile</scope>
<classifier>api</classifier>
</dependency>
</dependencies>
</project>
注意以上的依赖中的type属性为jar,而不是默认的war。classifier的值api与A中的classesClassifier的值api要一致。
注:验证通过
转载自:http://www.cnblogs.com/silentjesse/p/5071965.html
相关文章推荐
- Maven支撑下的War应用依赖另外一个WAR应用的解决方案
- Maven 支撑下的War应用依赖另外一个WAR应用的解决方案
- 在IOS应用中打开另外一个应用的解决方案
- Flex 布局教程:语法篇 作者: 阮一峰 日期: 2015年7月10日 网页布局(layout)是 CSS 的一个重点应用。 布局的传统解决方案,基于盒状模型,依赖 display 属性 + po
- 3.将maven项目jar纳入maven仓库,Mave项目依赖另外一个Maven项目的案例
- 在IOS应用中打开另外一个应用的解决方案
- 手把手教你一个maven的war项目如何引用另外一个war项目
- 3.将maven项目jar纳入maven仓库,Mave项目依赖另外一个Maven项目的案例
- 在IOS应用中打开另外一个应用的解决方案
- 在IOS应用中打开另外一个应用的解决方案
- ionic在一个ts中想应用另外一个ts中的方法解决方案
- 在IOS应用中打开另外一个应用的解决方案
- Android 一个应用启动另外一个应用
- android在一个应用中启中另外一个应用
- in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
- 在同一个解决方案下,如何从一个工程中调用另外一个工程的函数
- Android高手进阶教程(十一)----Android 在一个应用中如何启动另外一个已安装的应用!!!
- 解决方案:静态成员对象的声明在头文件中,函数代码在另外一个文件中,提示链接错误
- 用 ant 把一个web项目打成war 不依赖eclipse build.xml
- 关于《创建组件**失败。错误消息为**未能加载文件或程序集**或它的某一个依赖。系统找不到指定文件。》的解决方案