当前位置: 首页 > news >正文

maven maven-war-plugin 的配置【转】

maven maven-war-plugin 的配置

文章分类:综合技术

     在公司使用ANTX作为构建工具,一直以来感觉ANTX的auto-config功能很实用,它很好的将不同环境的打包方式通过properties文件分离了开来,且ANTX的这部分功能的实现应该是采用Velocity实现,故可以实现非简单的变量填充的功能,在配置中还可以写简单VM的语法。后来构建工具转型到MAVEN之后一直在寻找一种与ANTX 的autoconfig功能类似的插件,以解决不同环境打包的动态参数设置问题。经过google后发现了此插件,此处记录一下该插件----maven-war-plugin 。

 

基本配置 :(包括排除 不想打进war包的jar 的配置)

 

Xml代码 
  1. <build>  
  2.     <filters>  
  3.         <!-- 过滤文件,通常是一个属性文件(名值对的形式) -->  
  4.         <filter>src/main/webapp/META-INF/auto-config.properties</filter>  
  5.         <!-- 
  6.             <filter>${user.home}/antx.properties</filter> 
  7.         -->  
  8.     </filters>  
  9.     <finalName>communitytag</finalName>  
  10.     <plugins>  
  11.         <plugin>  
  12.             <groupId>org.apache.maven.plugins</groupId>  
  13.             <artifactId>maven-war-plugin</artifactId>  
  14.             <version>2.1-alpha-1</version>  
  15.             <configuration>  
  16.                 <!--  
  17.                     打包之前过滤掉不想要被打进 .war包的jar,注意:这个地方,本来路径应该是  
  18.                     WEB-INF/lib/anaalyzer-2.0.4.jar,但是经过多次试验,不能这样,至于咋回事儿,搞不清楚。。经多方查证均无结果  
  19.                     暂且这样吧,虽然显得很丑陋,但是总能解决问题吧  
  20.                 -->  
  21.                 <warSourceExcludes>*/lib/analyzer-2.0.4.jar</warSourceExcludes>  
  22.                 <webResources>  
  23.                     <resource>  
  24.                         <!-- 元配置文件的目录,相对于pom.xml文件的路径 -->  
  25.                         <directory>src/main/webapp/WEB-INF</directory>  
  26.   
  27.                         <!-- 是否过滤文件,也就是是否启动auto-config的功能 -->  
  28.                         <filtering>true</filtering>  
  29.   
  30.                         <!-- 目标路径 -->  
  31.                         <targetPath>WEB-INF</targetPath>  
  32.                     </resource>  
  33.                 </webResources>  
  34.             </configuration>  
  35.         </plugin>  
  36.     </plugins>  
  37. </build>  

 

 

如上配置及到web项目的pom文件中,且配置中路径相关的信息均以pom作为路径。

 

应用举例:

 

为了能更好的理解这个配置是怎么回事儿,我们来看看达到了什么样的效果,如下:

在应用的配置文件路径为 src/main/webapp/WEB-INF/biz/a.xml 有如下配置

 

Xml代码 
  1. <?xml version="1.0" encoding="GBK"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  3. <beans default-autowire="byName">  
  4.     <bean id="tagEntityManagementAO" class="com.taobao.communitytag.biz.ao.impl.DefaultTagEntityManagementAO">  
  5.         <property name="namespace" value="${communitytag.biz.tair.namespace}"/>  
  6.     </bean>  
  7. </beans>  
 

上面的配置中有如下需要动态植入的变量

Xml代码 
  1. ${communitytag.biz.tair.namespace}  

故我们将此变量对应的值配置到属性文件src/main/webapp/META-INF/auto-config.properties(pom.xml文件中filter的配置),如下

 

Xml代码 
  1. communitytag.biz.tair.namespace=242  

 

至此,执行命令mvn install,我们看看目标文件targe下的a.xml内容已经动态产生了,如下

 

Xml代码 
  1. <?xml version="1.0" encoding="GBK"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  3. <beans default-autowire="byName">  
  4.     <bean id="tagEntityManagementAO" class="com.taobao.communitytag.biz.ao.impl.DefaultTagEntityManagementAO">  
  5.         <property name="namespace" value="242"/>  
  6.     </bean>  
  7. </beans>  

 

结果已经很形象了。。。虽然不能支持像antx那样对velocity语法的支持,但是此插件对于大多数环境打包来说,已经足够了。至于这个plugin的深度的功能研究,待以后有需求的时候继续研究,记录在此以便查阅。

转载于:https://www.cnblogs.com/yecllsl/archive/2010/06/22/1762463.html

相关文章:

  • 云计算平台概览
  • [转]SAP ECC 6.0与R/3的区别
  • [SDOI2005]区间
  • [C++]拼图游戏
  • Servicehot:高效数据中心运维团队有哪7个习惯
  • 2009年的SCI期刊JCR出来了
  • 如何使用Docker构建运行时间较长的脚本
  • cheminfo.gov.cn css 样式示例学习
  • 云服务器ECS资源查询的正确姿势
  • 事与人
  • 校园网配置Vmware的网络模式,便于Xshell和notepad的连接
  • 2015年云计算或将成为企业主流应用
  • MagicDraw UML 16.8 安装教程(2)-破解补丁
  • 使用Docker镜像构建RPM包
  • oracle存储过程例子及其他语句[1]
  • python3.6+scrapy+mysql 爬虫实战
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • chrome扩展demo1-小时钟
  • E-HPC支持多队列管理和自动伸缩
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • vue 个人积累(使用工具,组件)
  • Vue UI框架库开发介绍
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 高性能JavaScript阅读简记(三)
  • 蓝海存储开关机注意事项总结
  • 免费小说阅读小程序
  • 设计模式(12)迭代器模式(讲解+应用)
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 首页查询功能的一次实现过程
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • $ git push -u origin master 推送到远程库出错
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (算法)前K大的和
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)甲方乙方——赵民谈找工作
  • (转载)Linux网络编程入门
  • ******之网络***——物理***
  • .“空心村”成因分析及解决对策122344
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .NET Core 成都线下面基会拉开序幕
  • .Net Core 中间件验签
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET运行机制
  • .ui文件相关
  • @Mapper作用