文档章节

用overlays合并多个war

w
 wangxinxx
发布于 2017/01/23 03:34
字数 524
阅读 32
收藏 0

在一个大项目中拆分maven工程时,很有可能会把js、css、jsp等文件放在不同的工程里(根据业务模块划分)。因为如果都集中在一个maven webapp里,那么这个maven webapp会太大,而且在业务上也比较分散 

但是这些持有js、css、jsp的maven工程,如果packaging设置为jar是不合适的,因为外围要读取内部的这些文件就会很困难。在这种场景下,一个很自然的想法就是打成war包,然后用某种方式将多个war包归并起来,得到最终的war包 

这就是overlays发挥作用的地方 

以下举一个例子: 

这里有2个web工程,一个是task-sla-web,一个是task-web-dist,packaging类型都是war,目录结构如下: 

 

 

下面是task-sla-web的pom文件: 

Xml代码 

<modelVersion>4.0.0</modelVersion>  
    <groupId>com.huawei.inoc.wfm.task</groupId>  
    <artifactId>task-sla-web</artifactId>  
    <packaging>war</packaging>  
    <version>0.0.1-SNAPSHOT</version>  
    <name>task-sla-web</name>  


该工程就是打成一个war包,但是这个war是无法运行的,而是稍后用来合并的。(其中放了 一个空的web.xml,因为maven-war-plugin的package goal有强制要求) 

下面是task-web-dist的pom文件: 

Xml代码 

<modelVersion>4.0.0</modelVersion>  
    <groupId>com.huawei.inoc.wfm.task</groupId>  
    <artifactId>task-web-dist</artifactId>  
    <packaging>war</packaging>  
    <version>0.0.1-SNAPSHOT</version>  
    <name>task-web-dist</name>  

Xml代码 

<!-- 合并多个war -->  
            <plugin>  
                <groupId>org.apache.maven.plugins</groupId>  
                <artifactId>maven-war-plugin</artifactId>  
                <version>2.1.1</version>  
                <configuration>  
                    <overlays>  
                        <overlay>  
                            <groupId>com.huawei.inoc.wfm.task</groupId>  
                            <artifactId>task-sla-web</artifactId>  
                        </overlay>  
                    </overlays>  
                </configuration>  
            </plugin>  

Xml代码 

<!-- 配置依赖 -->  
    <dependencies>  
        <dependency>  
            <groupId>com.huawei.inoc.wfm.task</groupId>  
            <artifactId>task-sla-web</artifactId>  
            <version>0.0.1-SNAPSHOT</version>  
            <type>war</type>  
        </dependency>  
    </dependencies>  


以上片段主要要注意几点: 

1、task-web-dist自身的packaging类型也是war 
2、在<overlay>中配置要归并的webapp的groupId和artifactId,注意的是,该pom所在的webapp工程是主工程,会覆盖掉所有待归并工程的同名文件,包括web.xml 
3、要归并的webapp,必须声明为依赖 

归并后的最终war包如下: 

 

其中的文件和.class都是由2个war包归并得到的,task-web-dist是主war包,如果多个war包中存在重名文件,则会被task-web-dist的文件覆盖,比如web.xml

本文转载自:http://kyfxbl.iteye.com/blog/1678121

w
粉丝 10
博文 58
码字总数 17378
作品 0
呼和浩特
程序员
私信 提问
maven乱码问题,在线求救

overlays合并多个war时候增增删查改出现乱码,但是单个war不会乱码。

qq8297036
2013/02/18
229
0
maven overlays 怎么运行启动??

eclipse maven 项目通过插件overlays 进行合并,是一个单独的项目通过overlays插件合并其他项目,怎么在这个项目上直接运行程序?而不是必须要合并后打包成war 放到tomcat中运行,这样不好调...

wad12302
2018/04/16
388
0
基于maven的javaweb项目模块化开发

考虑团队拥有多个类似项目的情况,比如一些功能差异不大的cms系统,这些系统有相同的基础代码。 如果每个项目拷贝整套代码,进行独立管理,那么维护代价很大,如果要修改一个基础代码,需要修...

taojinhuo
2014/06/05
8.1K
5
maven多web合并项目

实际情况:基于开源作者开源的web项目,扩展开发自己的业务功能,又不想跟原项目混在一起开发,即要实现开源web项目与自己的扩展web项目合并部署且自己的web项目依赖开源的web项目,经网上查...

zkool
2016/11/23
211
0
Maven创建新的依赖项目

1、 <!--可以建一个项目,所有的依赖都放在parent中,而本项目只依赖直接的jar包--> <parent> <groupId>com.hollycrm.hollybeacon</groupId> <artifactId>hollympwechat</artifactId> <vers......

CurtainRight
2016/02/26
25
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
33分钟前
29
0
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
9
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部