zoukankan      html  css  js  c++  java
  • Maven支撑下的War应用依赖另外一个WAR应用的解决方案

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


  • 相关阅读:
    Android之缩减apk大小[资源文件篇]:基于自定义Shape设置ShapeDrawable
    二叉排序树与堆的区别
    4、多用类型常量,少用#define预处理指令
    3、多用字面量语法,少用与之等价的方法
    2、在类的头文件中尽量少引入其他头文件
    1、了解Objective-C语言的起源
    iOS中date和string的转换
    OC中的抽象基类 和 接口
    Swift -- 基础部分 -- 1、常量和变量
    计算机原理简述-处理器和汇编
  • 原文地址:https://www.cnblogs.com/silentjesse/p/5071965.html
Copyright © 2011-2022 走看看