利用Maven的War Overlays实现War包资源共享
Maven War plugin提供了overlays功能,overlays提供了多个web应用程序共享资源的途径。通过overlays,可以通过包依赖实现个性化定制开发,而不是直接在已有成熟软件的源码下进行个性化定制开发。
overlays 样例
假设当前正在构建的项目documentedproject有如下结构
|-- pom.xml`-- src`-- main|-- java| `-- com| `-- example| `-- projects| `-- SampleAction.java|-- resources| |-- images| | `-- sampleimage.jpg| `-- sampleresource`-- webapp|-- WEB-INF| `-- web.xml|-- index.jsp`-- jsp`-- websource.jsp
该项目依赖于另一个war包documentedprojectdependency-1.0-SNAPSHOT.war
...<dependencies><dependency><groupId>com.example.projects</groupId><artifactId>documentedprojectdependency</artifactId><version>1.0-SNAPSHOT</version><type>war</type><scope>runtime</scope></dependency>...</dependencies>...
该war包依赖有如下结构
documentedprojectdependency-1.0-SNAPSHOT.war|-- META-INF| |-- MANIFEST.MF| `-- maven| `-- com.example.projects| `-- documentedprojectdependency| |-- pom.properties| `-- pom.xml|-- WEB-INF| |-- classes| | |-- com| | | `-- example| | | `-- projects| | | `-- SampleActionDependency.class| | `-- images| | `-- sampleimage-dependency.jpg| `-- web.xml`-- index-dependency.jsp
当前构建的项目documentedproject最后生成的war包将会有如下结构
|-- META-INF| |-- MANIFEST.MF| `-- maven| `-- com.example.projects| `-- documentedproject| |-- pom.properties| `-- pom.xml|-- WEB-INF| |-- classes| | |-- com| | | `-- example| | | `-- projects| | | |-- SampleAction.class| | | `-- SampleActionDependency.class| | `-- images| | |-- sampleimage-dependency.jpg| | `-- sampleimage.jpg| `-- web.xml|-- index-dependency.jsp|-- index.jsp`-- jsp`-- websource.jsp
web.xml来源于当前构建项目documentedproject。
overlays 配置
war plugin提供了一些overlays的配置项用于自定义,常用的include
/exclude
选项可以用于配置吸纳/排除包中指定的文件。
如下的配置从documentedprojectdependency.war overlay中排除了sampleimage-dependency.jpg
...<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.6</version><configuration><overlays><overlay><groupId>com.example.projects</groupId><artifactId>documentedprojectdependency</artifactId><excludes><exclude>WEB-INF/classes/images/sampleimage-dependency.jpg</exclude></excludes></overlay></overlays></configuration></plugin></plugins></build>...
overlays 打包
overlays打包过程遵循first-win策略,如果一个文件已经从一个overlay中得到拷贝,接下来的overlay中的同名文件将不会再被拷贝。overlays按它们在<overlays>
中声明的顺序被应用,如果没有该配置,则按照依赖声明的顺序被应用,该方法具有不可靠性,尤其是在有传递性依赖存在的情况。在混合有配置和无配置的情况下,无配置的overlays在有配置的overlays之后被应用。
默认情况下,当前构建的项目的资源在任何其他overlay之前被应用,当前构建项目被作为一个特殊的overlay被对待,其没有groudId和artifactId。如果需要改变这个默认,可以配置当前构建项目在其他overlay之后被应用。
...<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.6</version><configuration><overlays><overlay><groupId>com.example.projects</groupId><artifactId>my-webapp</artifactId></overlay><overlay><!-- empty groupId/artifactId represents the current build --></overlay></overlays></configuration></plugin></plugins></build>...
overlays可以结合不同的include
/exclude
被配置多次以提供更加细粒度的控制。
...<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.6</version><configuration><overlays><overlay><id>my-webapp-index.jsp</id><groupId>com.example.projects</groupId><artifactId>my-webapp</artifactId><includes><include>index.jsp</include></includes></overlay><overlay><!-- empty groupId/artifactId represents the current build --></overlay><!-- Other overlays here if necessary --><overlay><id>my-webapp</id><groupId>com.example.projects</groupId><artifactId>my-webapp</artifactId></overlay></overlays></configuration></plugin></plugins></build>...
my-webapp包中index.jsp
文件首先被配置优先于当前构建项目被使用,而同一个war包中的其他文件则在当前构建项目之后被应用。
利用Maven的War Overlays实现War包资源共享相关推荐
- 使用maven打war包时报[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war...
起因: maven项目中放置web.xml文件的资源文件夹写成了webapps 分析: maven的web项目默认是在src\main\webapp.如果在此目录下找不到web.xml就抛出该异常. ...
- MAVEN利用Profile构建不同环境的部署包
通常,项目要在多个环境部署,每种环境都有各自的资源配置参数,比如:数据库连接.Redis服务器地址等等. 所以,各个环境打包出来的资源是不一样的,如果手动的修改,费时费力.我们可以利用MAVAN的pr ...
- Maven多模块打包成war+vue打包
Maven多模块打包成war+vue打包 Maven多模块打包成war 示例 对于这样的工程, 1.需要将总的maven工程进行pom打包 <groupId>**</groupId& ...
- 【工欲善其事必先利其器·单点登录】使用CAS WAR Overlays部署CAS
CAS WAR Overlays是CAS官网最为推荐的安装部署方式,为何最为推荐,可阅读<CAS 部署建议>了解.本篇文章详细介绍CAS WAR Overlays部署步骤. 一.安装JDK ...
- 【maven install报错】Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war
maven install报错如下: [INFO] Scanning for projects... [INFO] Downloading: http://xxx.xx.xx.x:xxxx/nexus ...
- 使用idea进行Maven打包异常:Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war
使用idea进行Maven打包异常:Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war 参考文章: (1) ...
- Linux下打包压缩war和解压war包
因为种种原因公司需要把java程序达成war包.起先用zip命令打包,起先可以用,后来却无法使用.今天找到一个更好的办法.用jar命令,前提是要安装dk. 把当前目录下的所有文件打包成game.war ...
- Linux下打包压缩war和解压war包 zip和jar
============jar================= 把当前目录下的所有文件打包成game.war jar -cvfM0 game.war ./ -c 创建war包 -v 显示过程 ...
- 利用MAVEN打包时,如何包含更多的资源文件
首先,来看下MAVENx项目标准的目录结构: 一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,ma ...
最新文章
- java基础面试题整理-2021
- JQ中$(window).load和$(document).ready()使用,区别与执行顺序
- qcom Android Camera【转】
- c++ vector clear()清除容器中所有数据
- 鼠标滑过,解决ul下 li下a的背景与父级Li不同宽的问题
- Java黑皮书课后题第7章:*7.20(修改选择排序法)在7.11节中,使用了选择排序法对数组排序。改写7.11节程序,重复地在当前数组中找到最大值,然后将这个最大值与该数组中的最后一个数进行交换
- python之路----验证客户端合法性
- Main execution in Scala - Scala应用的入口
- vga焊接线顺序_焊接工艺问答,不做焊接也要收藏起来
- 整理的几个常用的数据库维护的脚本
- 实现Windows访问Linux文件系统
- SQL server 表中如何创建索引?
- 【语音合成】基于matlab重叠相加法的信号分帧与还原【含Matlab源码 568期】
- 20181120 复习菜鸟教程中的node.js
- 小米蓝牙广播数据解析(MiBeacon)
- 微软官方精简Windows7系统——Windows Thin PC的安装过程
- android设置自动亮度,Android亮度调节的几种实现方法
- postgresql-9.5.5数据库安装教程
- Swift 函数的定义及调用
- java如何设置jlabel位置_Java Swing – JLabel位置