Maven中如何配置WAR依赖WAR包

Maven工程war包依赖基础war包的解决方案及坑点 一、业务场景 传统的SSM项目一般都为war包部署,多模块的项目一般都是将模块打包成jar包依赖进web工程中,但是对于作为基础项目或者分模块的web项目来说,打成war包对静态资源的访问就不太方便;这里介绍一下通过Maven WAR Plugin的解决这个问题。这对于没有上微服务的项目来说应该是个不错的解决方案,将通用的常规化的功能抽到base.war中,而其他类似项目依赖base.war作为基... 阅读详情

项目背景:

1.     war项目C和war项目B都依赖war项目A和JAR项目D. 项目A中保存了B和C项目通用的web资源,比如通用的JavaScript,CSS,jsp等. 项目D中保存了B和C项目中都依赖的一些class

2.     开发人员希望每次都只面对一个项目,即Team A 开发项目A, Team B开发项目B, Team C开发项目C,以此类推

3.     每个Team在开发自己项目时,都希望能直接进行调试,例如war项目A可以直接部署到TOMCAT上运行测试

4.     最后实际交付给客户的却只有2个项目: B和C 。也就是说,最后要打包B和C,而在B和C的war包中都要包含A中的web资源和D中的class

解决思路:

使用maven-warpath-plugin插件来解决WAR所依赖的WAR

 

解决方案:

<dependency>

   <groupId>com.isoftstone.gads</groupId>

   <artifactId>common-web</artifactId>

   <version>0.0.1-SNAPSHOT</version>

   <type>war</type>

</dependency>

 

<dependency>

   <groupId>com.isoftstone.gads</groupId>

   <artifactId>common-web</artifactId>

   <version>0.0.1-SNAPSHOT</version>

   <type>warpath</type>

</dependency>

 

 <plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-war-plugin</artifactId>

    <version>2.1-beta-1</version>

    <configuration>

     <!默认会变成在target/war/work导致被打包进war文件,指定后为target/work->

     <workDirectory>${project.build.directory}/work</workDirectory>

     <webappDirectory>WebContent</webappDirectory>

     <useCache>false</useCache>

     <archive>

      <addMavenDescriptor>true</addMavenDescriptor>

     </archive>

 

     <overlays>

      <overlay>

       <groupId>com.isoftstone.gads</groupId>

       <artifactId>ebiz-common-web</artifactId>

      </overlay>

      <overlay>

       <!– empty groupId/artifactId is detected as the current build –>

       <!– 代表当前WAR项目,默认情况下当前WAR项目是先被拷贝的,如果要控制其顺序,则使用空的overlay –>

       <!– any other overlay will be applied after the current build since they have not been configured in the overlays

        element –>

      </overlay>

     </overlays>   <dependentWarExcludes>*/web.xml,WEB-INF/lib/*,/sql-map-config.xml,/jdbc.properties,/META-INF/*</dependentWarExcludes>

    </configuration>

</plugin>

 

<plugin>

    <groupId>org.appfuse.plugins</groupId>

    <artifactId>maven-warpath-plugin</artifactId>

    <version>2.1.0-M1</version>

    <extensions>true</extensions>

    <executions>

     <execution>

      <goals>

       <goal>add-classes</goal>

      </goals>

     </execution>

    </executions>

    <configuration><!– below WEB-INF/classes –>

     <warpathExcludes>**/logback-test.xml</warpathExcludes>

    </configuration>

</plugin>

 

 

注意红色部分,说明如下:

1.     首先是使用了maven-warpath-plugin插件,处理所有<type>warpath</type>的artifact,这个插件可以将从依赖的WAR中传递的依赖都打包到当前的WAR中,没有这个插件时,当前WAR从所依赖的WAR artifact那所传递来的依赖在打包成WAR时都会被忽略.既然现在能将传递的依赖打包了,就不用copy依赖的war中的WEB-INF/lib/*,所以被加入到<dependentWarExcludes>中

2.     <workDirectory>的设置看我写的注释

3.     webappDirectory的指定需要额外注意.首先,我使用了MAVEN默认的资源路径,也就是 src/main/webapp,而这里却告诉maven-war-plugin另一个路径”WebContent“,产生的结果就是,执行mvn package时,war-plugin和warpath-plugin会将当前war和所有依赖的war的web资源都拷贝到WebContent目录下.这样,WebContent目录包含的内容就是最终打包成WAR的内容了.

 

使用Maven打出瘦版的WAR包 我们在生产环境上部署Web应用时,可能把想把Web应用依赖的jar包都放在容器的类路径下,不打到War包中,这样,升级时,不用上传很大的文件了(还可能有别的考虑)。打出这种瘦版的War包,需要使用maven war plugin,参考: http://maven.apache.org/plugins/maven-war-plugin/examples/skinny-wars.html 阅读详情

相关推荐

跟着团子学SAP EPPM:项目管理常见的集成场景(PPM\PS\MS Project)

在SAP的EPPM解决方案中,针对企业战略级别的投资组合管理首先是定义合适的投资组合的层级结构,在投资组合下可以通过不同维度去定义投资篮(Portofolio Bucket)进行层层拆分,在最下层级的投资篮下可以分配明细的投资项(Portofolio Item),投资项可以是独立的一个一个具体执行的项目,也可以是单纯的一次服务等等。 今天主要聚焦在投资项的维度展开讲一下在SAP中投资项常见的几种集成模式: 集成场景1:使用PPM中的Project Management进行项目管理 第一个场景是在创建投资项

Lucas1211的博客 4140

maven war包依赖war包 解决方案

war工程是无法直接依赖war工程的,如果直接依赖,是找不到的,需要配置一下 例:a 是 war工程,b也是war工程 a 依赖 b,意思是:a工程中需要导入b工程的war包 b 的pom.xml中配置 <!-- 解决war依赖war的问题,当前是被依赖方 --> <plugin> <groupId>org.apache.maven.pl...

Lan_Se_Tian_Ma的博客 2063

MacX DVD Ripper Pro for Mac(DVD解码器) 6.2.120190416免激活版

只需要5分钟即可转档一张DVD光碟!并允许我们在编码之前预览、编辑、裁剪、修剪或扩展视频。第一款也是唯一一款能够支持DVD到MP4,H.264,MOV,FLV,MPEG4等所有格式DVD(新DVD,99-标题DVD,损坏和无法播放的DVD)和翻录DVD / ISO映像的工具,AVI,QT,MP3等。借助350多种预设配置文件MacX DVD Ripper Pro for Mac(DVD解码器) 6...

llhf688的博客 891

Maven WAR包依赖另一个WAR的解决方案

例:A 是 WAR 工程,B 也是 WAR 工程,B 依赖 A,意思是:B 工程中需要导入 A 工程的 WAR 包。WAR工程是无法直接依赖另一个WAR工程的,需要额外配置。A 的 pom.xml ,关注 plugin 中的内容。本文章只作为单个问题点来记录,对Maven不做科普。B 的 pom.xml 中配置有两个地方需要配置。接下来使用A、B两个项目进行距离。parent 工程 如下。

郁方林的博客 466

lvgl 实现表格table,并且固定表头

嵌入式实现table,lvgl 实现原生表格table组件

m0_61704502的博客 1271

Windows系统下LaTeX环境搭建与编辑器配置全攻略

本文详细介绍了在Windows系统下搭建LaTeX环境的完整流程,包括TeX Live的安装、TeXStudio编辑器的配置优化以及常见问题排查。特别针对中文用户推荐使用清华镜像源加速下载,并提供了XeLaTeX编译器配置、中文支持等实用技巧,帮助用户快速上手LaTeX文档编写。

weixin_42554408的博客 449

Maven资源排除和包含

给war包添加静态资源路径(配置多个web静态资源路径) maven-war-plugin:webResources.resource.directory 可以配置多个resource,每个resource都可以配置 排除或包含文件(includes和excludes)。 如下例所示: <!--打war包--> <plugin> <artifactId>maven-war-plugin</artifactId> ...

zollty的专栏 2869

如何处理MIGO取消物料凭证报错:“只是可能对有相同的价格控制进行倒记账(本月S,前月V)” & “仅在 QM 中修改物料质量检验库存”

记录一次处理MM模块的报错。这次连续处理了两个错误,“只是可能对有相同的价格控制进行倒记账(本月S,前月V)” & “仅在 QM 中修改物料质量检验库存”。把过程和操作步骤记录下一。方便日后回头查找。

IT小职员 6232

Maven打包期依赖war包/Zip包 并解压至指定目录的pom配置

首先配置依赖,引入需要依赖的war包和zip包: com.huawei.mateinfo kewen-common-war 0.0.1 war com.huawei.mateinfo kewen-common-war-template 0.0.1 zip 在使用maven-dependenc

江湖小虾米 6532

Vector CANape的使用记录

开门见山,今天想和大家分享下CANape使用记录,分享原因是近日在分析一个客户现场软件问题时,需要用到CANape来实时的监测ECU中的变量,因为之前对CANape的认知比较浅薄,觉得标定工程师使用他就足够了,但是这次的经历让我觉得需要写点东西来记录自己学习并使用他的过程。 相信大家能够在网上找到很多关于如何使用CANape的文章,从新建Project到后面的数据的观测、保存以及回放等等。我个人也是这么学过来的,所以我不打算从那些方面着手去描述如何使用她,而是根据我的真实使用过程以及问题的抛出到如何解决来

2万+

复旦微实现串口在线升级BOOT.BIN

将该 demo 生成的 app(升级用)和 fsbl、最简化 bit 文件(可选)打包成 BOOT.BIN,作为 golden image 烧写在 qspi flash 偏移 0 地址开始的位置,其中最简化 bit 文件为在线升级功能提供必要的物理通道(如果不需要,可以不打包该文件),golden image 一旦发布基本不需要进行升级,由该 golden image 负责和上位机进行通信交互,完成业务 app、业务 bit 文件、uboot 以及操作系统 image 等文件在线升级,在qspi flash

wangjie36的博客 3174

maven配置war包依赖jar包出现的错误以及解决思路-日记

日记记录一下在命令行窗口使用maven遇到的麻烦。

ws_please的博客 1697

基于pytorch cnn ResNets卷积网络的模糊图像检测 完整代码数据直接运行

基于pytorch cnn ResNets卷积网络的模糊图像检测 完整代码数据直接运行

730

java 指定依赖包目录,Maven将依赖包、jar/war包及配置文件输出到指定目录

目录写在前面​ 最近遇到一个朋友遇到一个项目需要将 maven 的依赖包和配置文件分开打包然后用脚本执行程序。这样的好处在于可以随时修改配置文件内容及查看 jar 包。如果将所有打成一个 jar 包就会有个问题(例如:修改数据库连接位置需要重新打包这样就失去了使用配置文件的有优点)。本文利用maven插件将依赖包、jar/war包及配置文件输出到指定目录1. 使用 maven-dependency...

weixin_42298969的博客 926

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Maven将依赖包、jar/war包及配置文件输出到指定目录

使用Maven插件将依赖包 jar包 war包及配置文件输出到指定目录

Selier的博客 7663

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Maven配置-依赖另一个war包(需编译jar)

Maven配置A.war 依赖 B.war1、在B中: &lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt; &lt;configuration&gt; &lt;!...

chenzuyibao的博客 1558

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

配置pom同时生成war包用来发布,生成jar包供其他war包依赖

背景:         做的系统要求有两个war包,分别发布到两台服务器上,其中一个war包1.war要求有部分功能要依赖于另外一个war包2.war,所以打2.war的时候同时生成2.jar,这时2.war的pom.xml配置如下: 1、、首先添加在pom.xml中添加插件 maven-jar-plugin , 使得 在调用命令mvn package install 或者

xiaosongwahaha的博客 2440

java mevan war_[Java教程]Maven项目中War包的打包及依赖方式

[Java教程]Maven项目中War包的打包及依赖方式0 2016-05-10 12:00:03两个web项目之间的依赖引用方式。Web项目之间,通过war包的方式进行引用的。例如,有两个项目,puzzle-web和puzzle-web-demo,两个均是web项目,puzzle-web-demo依赖于puzzle-web,具体配置如下下载地址。(1)puzzle-web项目po...

weixin_42469243的博客 324

maven依赖本地jar包

1.dependency中添加本地依赖的jar 在项目跟目录的lib目录下添加需要的jar包,groupId,artifactId,version都可以随便命名, <scope>system</scope>是必须的 <dependency> <groupId>cas</groupId> <artifactId>cas</artifactId> <version>1.0</ver

xiaoguangtouqiang的博客 2562

Springboot使用Maven将本地依赖打包到war包

1、环境Springboot项目,打包工具使用Maven2、需要WAR包部署到国产中间件3、项目依赖了一些JAr包,非Maven库中依赖。

青语的博客 2051

maven项目引入外部jar包并打进war包

<!-- 引入外部jar包 --> <dependency> <groupId>com</groupId> <artifactId>paradox</artifactId> <version>1.4.1</version> <scope>system</scope> &l...

cxws110的博客 650

maven 工程依赖war包

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34050005的博客 365
上一篇: OSGi为什么重要:向模块化转移的主攻手
下一篇: Maven项目中如何同时Install成JAR和WAR包
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值