在一个大项目中拆分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文件:
<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文件:
<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>
<!-- 合并多个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>
<!-- 配置依赖 -->
<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
- 大小: 15.8 KB
- 大小: 8.7 KB
- 大小: 17.5 KB
分享到:
相关推荐
在本篇博文中,我们将深入探讨overlays的概念、工作原理以及如何使用它们来合并多个WAR文件。 ### overlays简介 Overlays是Apache Maven引入的一个概念,它允许我们在构建过程中合并多个WAR项目,每个项目可以被视...
React-Overlays是React生态系统中的一个开源库,专注于提供用于创建高效、动态和可自定义的叠加层(overlay)组件的工具集。这个库源于Bootstrap的JavaScript插件,并且独立于Bootstrap,允许开发者在自己的React...
React Overlays是React生态系统中的一个开源库,专门用于创建可浮动、可定位的UI组件,如模态对话框、下拉菜单、工具提示等。这个库的核心思想是提供一组低层次的、高度可定制的组件,让开发者可以构建出符合自身...
在描述中提到的博客链接,虽然无法直接访问,但根据常见的 Maven overlay 实战场景,我们可以推断博主可能分享了如何设置和使用 Maven overlay 来合并多个 Web 项目的资源,如 JSP 页面、CSS、JavaScript 文件等,以...
Technical Indicators and Overlays Technical Indicators and Overlays
"OverLays.zip"这个压缩包很可能包含了用于创建这种加载层效果的用户控件资源和代码示例。以下是对Windows Phone (WP)加载层用户控件的详细解释: 1. **什么是加载层**: 加载层是一种设计模式,它在主界面之上...
图像叠加层是一种可视化技术,它允许将多个图像或数据层合并到一个单一的视图上。每个层可以有不同的透明度或权重,使得用户能够看到不同层次的信息,从而更好地解析复杂的图像数据。例如,在医疗成像中,可能有一个...
React-overlays是React生态系统中的一个库,专门用于创建可复用、健壮的对话框组件。这个库提供了基本的UI层构建块,如模态对话框(Modal)、下拉菜单(Dropdown)、工具提示(Tooltip)等,使得开发者能够更轻松地...
在对其他扩展程序有太多不良体验之后,最初是为个人使用而创建的。 有些会在简单站点上工作,但最终会在另一个站点上失败。 大多数扩展都对所有站点使用相同的逻辑,而忽略了站点是唯一的事实。 我们的目标是在...
DOM叠加规范 是的存储库。 原始提案: 参加 阅读 查看问题中是否正在讨论您的,或者是否正在讨论您的想法。 我们将发布每两周一次的通话记录。 您也可以加入工作组... 通常,两个PR将同时合并。 请注意,与规范
Scala 工具 gentoo 覆盖 ... 您可以安装多个 Scala 版本并使用 eselect 选择活动: $ sudo emerge eselect-scala $ sudo eselect scala list $ [1] scala-2.9.0 * $ [2] scala-2.8.1 $ sudo eselect sca
文献资料安装npm install --save react-overlays笔记所有这些实用程序均已从中提取出来,以便更好地访问这些常用组件的通用实现。 包含的组件是用于创建更多抛光组件的构建块。 一切都是自带样式,CSS或其他方式。 ...
模板叠加 模板文件的Emacs 安装 梅尔帕 MELPA有售 通过el-get (push '(:name template-overlays :type git :url "git://github....用 (require 'template-overlays) (add-hook 'web-mode-hook 't
nix叠加层个人nixpkgs叠加层,添加了以下软件包:用法在用户级别,您可以通过在~/.config/nixpkgs/overlays克隆此~/.config/nixpkgs/overlays来将此覆盖与nix结合使用: mkdir -p ~ /.config/nixpkgsgit clone ...
当需要依赖其他WAR文件时,可以将WAR文件重命名为符合`groupId`、`artifactId`和`version`的格式,然后在`pom.xml`的`dependencies`部分添加对应的依赖信息。同时,为了指定本地依赖,`scope`应设为`system`,并...
在Android系统开发中,"vendor_overlays"是一个关键的概念,它涉及到系统自定义化和设备差异化。这个术语主要与Android的HAL(硬件抽象层)和Vendor Interface层有关,用于实现制造商特定的功能和优化。让我们深入...
在Android系统中,`vendor_overlays` 是一个关键的概念,用于自定义设备的用户界面和增强设备特定的功能。这个概念主要适用于OEM(原始设备制造商)或者开发者,他们希望为自己的设备提供独特的用户体验。`戈尔工厂`...
瓦片地图是一种常见的地图展示方式,它将大尺寸的地图分割成多个小块(即“瓦片”),每个瓦片都是一个较小的图片,可以根据需要动态加载。这种技术能够提高地图加载速度和用户体验。在OpenLayers中,我们可以通过`...
// extensions / shortcuts叠加层包括:*最新的Google图片* Google地形* Microsoft必应地图*此处地图* ArcGis Topo地图*打开街道图* ANCPI *(仅罗马尼亚)图层,除非您遵守每个图层提供者的特定使用条款。...
Matlab 内置的image() 和imagesc() 不能直接允许一个图像以不同的颜色(即,不同的颜色图)覆盖在另一个图像上。 这些实用程序通过适当地缩放和扩充图像数据和活动颜色图,提供了一种基本的方法来做到这一点。 例如...