最近在做项目中,用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要一致。

Maven支撑下的War应用依赖另外一个WAR应用的解决方案的更多相关文章

  1. Eclipse下Maven新建项目、自动打依赖jar包(包含普通项目和Web项目)

    不多说,直接上干货! 当我们无法从本地仓库找到需要的构件的时候,就会从远程仓库下载构件至本地仓库.一般地,对于每个人来说,书房只有一个,但外面的书店有很多,类似第,对于Maven来说,每个用户只有一个 ...

  2. maven无法下依赖jar文件的解决方案

    问题描述: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be ...

  3. Maven 工程下 Spring MVC 站点配置 (一)

    最近,查找一些具体资料时,虽然会有很多,但是系统的却很少,尤其是对maven 下 spring mvc 站点搭建的配置,总是说的很多但让新手一目了然的步骤却少之又少. 对此闲暇时整理了一下,做了一套较 ...

  4. 【spring boot】idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到(转)

    转自:https://www.cnblogs.com/sxdcgaq8080/p/7727249.html   接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p ...

  5. Maven入门指南③:坐标和依赖

    1 . 坐标 maven 的所有构件均通过坐标进行组织和管理.maven 的坐标通过 5 个元素进行定义,其中 groupId.artifactId.version 是必须的,packaging 是可 ...

  6. Maven环境下搭建SSH框架

    © 版权声明:本文为博主原创文章,转载请注明出处 1.搭建环境 Maven:3.3.9 Struts2:2.5.10 Spring:4.3.8.RELEASE Hibernate:5.1.7.Fina ...

  7. 【spring boot】6.idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到

    接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p/7712874.html 然后声明一点,下面打包的过程中,scope一直都是使用默认的范围 <!--用于 ...

  8. idea下springboot打包成jar包和war包,并且可以在外部tomcat下运行访问到

    接着上一章走呗:http://www.cnblogs.com/sxdcgaq8080/p/7712874.html 然后声明一点,下面打包的过程中,scope一直都是使用默认的范围 <!--用于 ...

  9. Maven工程下报错:The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

    Maven工程下,webapp下面新建index.jsp文件,报如下错误. 原因很简单,没有安装如下maven依赖包: <dependencies> <!-- JSP相关 --> ...

随机推荐

  1. System类与Runtime类

    PS: Java程序在不同操作系统上运行时,可能需要取得平台相关的属性,或者调用平台命令来完成特定功能.java提供了System类与Runtime类来与程序的运行平台进行交互. System类: 1 ...

  2. 简单的运动学,用canvas写弹力球

    声明:本文为原创文章,如需转载,请注明来源WAxes,谢谢! 跟之前的随笔一样,因为本人仍是菜鸟一只,所以用到的技术比较简单,不适合大神观看...... 学canvas学了有一个多礼拜了,觉得canv ...

  3. vi 命令 行首、行尾

    vim 跳到行首 : 数字 0 vim跳到行位 : $  [Shift + 4]

  4. CentOS 7卸载Docker

    1.先查询所有安装的包 yum list installed | grep docker*或者rpm -qa docker* 2.删除查询出来的包 # 一般情况会有一个 yum remove -y d ...

  5. javax.crypto.BadPaddingException: Given final block not properly padded解决方案

    解密的时候报错: javax.crypto.BadPaddingException:   Given   final   block   not   properly   padded 该异常是在解密 ...

  6. 从入门到精通Puppet的实践之路

    本文有感于<精通Puppet配置管理工具>在豆瓣上的某些差评而顺手写的书评. 半路出家   故事要从12年初说起.  某天,部门老大让我所在team的老大调研一下当下业界的配置管理工具.于 ...

  7. MySQL 复习笔记

    本文内容 SQL 语句 创建数据库 创建数据表 数据完整性约束 四种基本字符类型说明 SQL 基本语句 类型转换函数 日期函数 数学函数 字符串函数 合并结果集 union CASE 函数用法 IF ...

  8. .NET Unity XML 配置文件(2)

    本文内容 Unity 配置示意图 Unity 的 XML 架构 参考资料 研究配置文件总是很麻烦,而且很可能因为版本问题,会稍有不同.如果你不确定 Unity 是否支持以及如何支持某个元素,就看下相关 ...

  9. Java动态代理实现方法

    import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflec ...

  10. Android Error:Execution failed for task ':app:compileDebugJavaWithJavac' 解决方案

    今天使用 Android Studio 构建项目的时候出现了这个错误 compileDebugJavaWithJavac 通过搜索发现造成该问题的原因有很多需要结合具体的项目进行排查 通过 Andro ...