maven的动态打包功能
对于maven而言,打包是其一个非常重要的功能,不仅仅是简单的编译打包的概念,其还通过各种插件支持各种灵活的打包策略。现举一个例子讲解如何动态实现一个web项目的打包:
需求:
现需要对一个web项目打出不同的3个包,3个包除了有公共的jar和配置文件依赖外,还各自需要依赖不同的特定的jar和特定的配置文件,而且不同的war包名字最好是不同的。
实现:
我们可以利用 maven的profile机制和maven-war-plugin插件来完成以上需求,所有需要配置和修改的只涉及项目的pom文件,首先我们在pom文件中加入profile,不同的profile引入特定的jar依赖和动态定义${env}变量
<profiles>
<profile>
<id>one</id>
<properties>
<env>one</env>
</properties>
<dependencies>
<dependency>
<groupId>com.xxx</groupId>
<artifactId>project-one</artifactId>
</dependency>
</dependencies>
</profile>
<profile>
<id>two</id>
<properties>
<env>two</env>
</properties>
<dependencies>
<dependency>
<groupId>com.xxx</groupId>
<artifactId>project-two</artifactId>
</dependency>
</dependencies>
</profile>
<profile>
<id>three</id>
<properties>
<env>three</env>
</properties>
<dependencies>
<dependency>
<groupId>com.xxx</groupId>
<artifactId>project-three</artifactId>
</dependency>
</dependencies>
</profile>
</profiles>
然后引入maven-war-plugin插件,实现打包时根据不同的${env}变量动态引入不同的资源文件,并动态设定打包的包名:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<webResources>
<resource>
<directory>deploy/${env}</directory>
<targetPath>WEB-INF/classes</targetPath>
<filtering>true</filtering>
</resource>
</webResources>
<warName>project-${env}</warName>
</configuration>
</plugin>
然后在项目下使用 mvn clean install -DskipTests=true -P ${profile_id} 进行打包 ,${profile_id}指各个不同的profile的id
maven的动态打包功能的更多相关文章
- maven profile动态选择配置文件
一.背景 在开发过程中,我们的软件会面对不同的运行环境,比如开发环境.测试环境.生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配 ...
- Maven profile动态选择配置条件
背景 在开发过程中,我们的软件会面对不同的运行环境,比如开发环境.测试环境.生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配置, ...
- 用maven按环境打包SpringBoot的不同配置文件
利用maven按环境打包SpringBoot的不同配置文件 application-dev.properties对应开发环境 application-test.properties对应测试环境 app ...
- 被IDEA的打包功能打败了:dubbo服务端打包注意事项
下午在搭建一个基于dubbo和spring的服务端项目.结果打包成jar后各种报错. 起初是因为idea的机制,导致META-INF下自己的Mainfest.mf总是莫名被覆盖,于是报找不到主函数.后 ...
- eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis
接上一篇: eclipse 创建maven 项目 动态web工程完整示例 eclipse maven工程自动添加依赖设置 maven工程可以在线搜索依赖的jar包,还是非常方便的 但是有的时候可能还需 ...
- Mac 下用IDEA时maven,ant打包 (mr 入库hbase)
现在非常喜欢IDEA,之前在mac 上用的eclipse 经常出现无缘无故的错误.所以转为IDEA. 不过新工具需要学习成本,手头上的项目就遇到了很多问题,现列举如下: 背景描述 在hadoop 开 ...
- maven中如何打包源代码
http://yanghaoyuan.iteye.com/blog/2032406 使用Maven对项目部署太方便了,特别是依赖关系,最近学习使用Maven,为了备忘和技术的分享特意注册个账号记录到博 ...
- ApkTool动态打包
引言: APK在推广的时候可能会须要动态打包APK.比方公布到不同渠道的时候,须要在manifest文件里改动渠道信息.或者app在推广的时候.须要在apk包里面加上推广人信息等. 环境变量: 1.J ...
- eclipse 创建maven 项目 动态web工程报错
Eclipse 创建maven 项目 动态web工程 注:Eclipse版本为(Version: Mars.1 Release (4.5.1))maven版本为(apache-maven-3.3.9) ...
随机推荐
- 自学Python1.8-python input/print用法 格式化输出
自学Python之路 自学Python1.8-python input/print用法 格式化输出 1.input函数 Python3.x 中 input() 函数接受一个标准输入数据,返回为 str ...
- android 组件使用()
程序入口点 类似于win32程序里的WinMain函数,Android自然也有它的程序入口点.它通过在AndroidManifest.xml文件中配置来指明,可以看到名为NotesList的activ ...
- 51nod1238 最小公倍数之和 V3
又被这神仙题给坑爆了. 神仙题解. 一开始我把lcm变成ij/gcd然后按照常规套路去推,推到最后发现不是miu * Id而是miu · Id......这还搞鬼啊. 正解居然跟这个差不多,先转成求其 ...
- A1054. The Dominant Color
Behind the scenes in the computer's memory, color is always talked about as a series of 24 bits of i ...
- JasperReport 中踩过的坑
Mac Book Pro 10.13.6Jaspersoft Studio community version 6.6.9JDK 8 安装 Jaspersoft Studio Jasper Rep ...
- GBDT原理详解
从提升树出发,——>回归提升树.二元分类.多元分类三个GBDT常见算法. 提升树 梯度提升树 回归提升树 二元分类 多元分类 面经 提升树 在说GBDT之前,先说说提升树(boosting tr ...
- 选择监听事件ItemListener(是否被选择)
[界面说明] 下拉列表框,选谁谁显示.复选框与单选按钮,输出被选与否的状态.知识点主要代码为: int state = e.getStateChange(); ItemEvent.SELECTED I ...
- 枚举 enum 成员变量初始化
typedef enum { A1, A2, A3, A4 = , A_END }A; 如果A1赋值为5,则下列依次递增1,即A2等于6,A3等于7: 由于A4赋值为10,所以A_END等于11 如果 ...
- Linux用户密码策略
使用Linux快三年了,从未想过Linux用户密码策略,从未把一本Linux的书从头看到尾(上学时的教材除外),故不知书上有无介绍,直到最近参加公司的信息安全稽核会议后才开始考虑Linux用户密码策略 ...
- OS + Linux RedHat 6 / redhat 6 configuration / configure / autoconf / make / make install
s These critical programs are missing or too old: as ld http://blog.csdn.net/testcs_dn/article/detai ...