最近在做项目中,用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要一致。
三、运行环境
1、Eclipse4.2
2、Maven3.X
3、m2eclipse插件
分享到:
相关推荐
既能不升级jar包又能使用高版本依赖同时还不造成冲突的完美解决方案
maven依赖war构件 技术交流希望 这个工程简单的介绍一下怎么在开发环境
java运行依赖jar包
这是一个简单的maven依赖的小例子
springboot 的maven依赖包,含有所有maven依赖,网络不好的可以来下。压缩包3.
Java使用Maven导入Spring依赖
Oracle依赖,maven依赖,ojdbc8的依赖
这是一个maven依赖+继承+聚合的小例子,用来参考和学习maven
maven教程,目录如下: Maven安装配置 Maven启用代理访问 Maven本地资源库 Maven中央存储库 如何从Maven远程存储库下载?...Eclipse创建一个Maven Web项目 在易百教程网看到的,觉得还不错,就做成了chm笔记本形式
maven依赖库,里面含有较为全面的jar包,如果maven无法自动下载依赖库,可手动导入依赖库;该压缩包解压后可以直接在maven项目中指定路径使用。
maven依赖检查, 由于maven采用最短路径解决间接依赖,容易导致版本降级,本工具检查项目开发中出现的war包依赖变更, linux环境运行
maven-war-plugin-2.1.jar
Maven 翻译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。 Maven 是一个项目管理工具,...
maven-war-plugin-1.6.2.jar
包括slf4j,log4j,mybatis,commons-io,commons-lang及其他commons,以及mail,junit,generator自动生成相关依赖,mysql等全套依赖
java运行依赖jar包
maven自动部署war包到tomcat
maven版正确的Springboot打war包所需的pom依赖配置文件,童叟无欺,绝不欺骗,如下载后有问题,可联系本人
maven-war-plugin-2.0.1.jar
将开发过程常用的maven依赖汇总下来了,不用每次都去maven仓库查询,可以节省很多时间