maven 根据P参数值打包动态修改properties文件中值或一定properties
http://www.tuicool.com/articles/Mj2EzqN
由于本人 最近忙着公司事情,昨天没有写博客,今天就继续写吧
需求:由于最近开发clover项目 ,没有使用spring,更没有使用任何框架,而使用J2EE的web工程,所以连接ZK和MongoDB、Redis等服务器需用指定properties文件,
而目前公司又分各套环境(dev、test、product),所以希望打包的时候 根据profile id 来动态使用不同环境properties文件 或者动态修改properties参数值
方法一:使用一套properties配置文件,但具体参数使用${key}占位符方式打包替换
maven的pom中指定每套环境的参数值
我们还要启动resources的filter过滤器:
按照上述配置后,我们执行maven打包操作后:
我们可以看到mongoDBConfig.properties、redisConfig.properties、zkConfig.properties等文件都被替换到指定环境的参数了
由于 有些老系统会在项目中的resources下指定各套环境配置文件,如下图片:
但是我们打包后 只希望将指定环境下的*.properties文件都移动到classes下,所以可以考虑使用方法二
方法二:使用maven-antrun-plugin插件方式实现
我们只在打包dev环境:
我们要指定resources.dir目录为 src/main/resources/dev
我们增加一个plugin 为maven-antrun-plugin,由于我只要在子工程clover-core下面移动这几个文件,最终打成一个jar包,所以要把这个plugin代码放在clover-core下的pom.xml文件,如果把这个plugin放在父工程的pom.xml下那就移动所有的子工程下resources文件
还是贴上代码吧:
<build> <finalName>clover-core-${clover.version}</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>compile</id> <phase>compile</phase> <configuration> <tasks> <echo message="********************** copy resources to classpath*************************"/> <echo message="********************** copy ${resources.dir} to classpath*************************"/> <copy todir="target/classes" overwrite="true"> <fileset dir="${resources.dir}"> <include name="*.*"/> <include name="*/*.*"/> </fileset> </copy> </tasks> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
我们执行打包后:
我们可以看到clover-core下已经将这几个*.properties移动到classes下了
个人还是比较推荐第一种方式
PS:有的时候 我们想通过动态打包,生成的子工程的名字是带各套环境, 比如:clover-core-dev-1.0.jar
我们在父工程的profile下设置clover.version
子工程clover-core想最终打包是clover.version指定的环境+版本号:
<version>${clover.version}</version> ---这个将会打包后deploy中央私库后最终的version
<finalName>clover-core-${clover.version}</finalName> --这个就是子工程clover-core打包最终名字
我们执行打包后:
私库
当我们打war包的时候,我们也可以指定依赖模块的版本号:
我们这里面使用的 profile配置的环境version,但让你想自己改成别的版本,你打包后就可以看到某个依赖的jar包就是你指定的版本
我们把clover-core的版本改成dev-1.0
再把clover-core的pom.xml
打包后 我们看下war包中:
但我看下clover-core子工程下的target:
原来是这样的
maven用的时间倒是很长,但大多时间都是一次配置后,再没有修改后,然后开发项目,但有些细节 最终没有研究那么明白
文章写的有点水,希望对您受用,谢谢
===========
maven 如何引用配置文件中变量
http://www.dewen.io/q/7578
maven 根据P参数值打包动态修改properties文件中值或一定properties相关推荐
- 通过反射动态修改自定义注解属性值
通过反射动态修改自定义注解属性值 java/lang/reflect 这个包下面都是Java的反射类和工具. Annotation 注解,也是位于这个包里的. 注解自从Java 5.0版本引入后,就成 ...
- 动态修改参数cron的值来实现Spring自带定时器动态的执行任务
最近在做一个项目二次开发:安防系统中用到了Spring自带的定时器,本来已经实现了.但是考虑到最终会在多家保安公司上线,所以可能每家公司要求执行的定时器任务的执行周期是不会一样的,起初想着直接同意规定 ...
- IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题
IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题 方式一.在 pom.xml 中添加下面的代码 <build><!--解决Maven项目编 ...
- 如何在log4j.properties文件中使用相对路径
来源:http://hi.baidu.com/eredlab/blog/item/f6c1a5efe44a1af9cf1b3e17.html 写在最前面: log4j是一个应用非常广泛的Java日志组 ...
- SpringMVC通过注解方式读取properties文件中的值
为什么80%的码农都做不了架构师?>>> 本方法是结合Java配置及XML配置来完成. 首先定义XML配置文件 app.xml: <?xml version=" ...
- 修改.fig文件中图的x轴或y轴的标题及数据图
修改.fig文件中图片的x轴或y轴的标题 f=gcf; f.Children(2).XLabel.String='new xlbel' %这里假设操作对象是子图2 f.Children(2).Xlab ...
- SpringMVC+HibernateValidator,配置在properties文件中的错误信息回显前端页面出现中文乱码
问题: 后台在springMVC中使用hibernate-validator做参数校验的时候(validator具体使用方法见GOOGLE),用properties文件配置了校验失败的错误信息.发现回 ...
- 九、装配bean--通过properties文件注入值
一.建立com.util下建立db.properties文件 name=root driver=com.mysql.jdbc.Driver url=jdbc\:mysql\://localhost\: ...
- java的properties文件中的换行书写
我们经常在properties文件中设置属性的时候,如果某一个属性的值太长,那么查看就不太方便,但是又不能直接的换行,否则读取属性的值的时候其换行部分就被忽略了.其实我们可以通过增加一个\符号来达到换 ...
最新文章
- SQL2K数据库开发二之查看和修改Sample数据库
- 如何使用SAP零售系统中的LISTING?【中英文对照版】
- CentOS 7.x 远程重装
- Symantec Backup Exec System Recovery还原向导
- Python Scipy 科学计算库
- python中from import用法_python学习--Python之import与from...import的区别与用法
- 前端有用JavaScript技巧
- 为QT的Webkit 编写插件
- Adobe下周将推新补丁和新的更新模式
- 设置MyEclipse编码、补全快捷键、字体大小
- bay——RAC_ASM ORA-15001 diskgroup DATA does not exist or is not mounted.docx
- python使用Jpype调用java程序
- Sun Studio 12 Update 1:C++ 用户指南
- java判断数的奇偶性_判断一个数的奇偶性
- 密码太多不知道怎么记录?不如自己写个密码箱小程序
- 存储卡的相关标准.CF.SD.SDHC.MMC.TF
- iPhone iOS升级完美指南
- 数据库--循环语句:for循环
- ch.ethz.ganymed包ganymed-ssh2的使用
- 消防应急照明系统在某数据中心项目的应用
热门文章
- 【数据结构与算法】之深入解析“将有序数组转换为二叉搜索树”的求解思路与算法示例
- HarmonyOS之AI能力·助手类意图识别
- hive中如何进行按周计算
- 编程语言是从哪蹦出来的——大型伦理寻根现场
- 计算机精英协会考核题 —— 第三题:斐波那契数
- 【Tools】Windows下Git 2.18安装步骤
- python中的位置怎么看_如何知道项目在Python有序字典中的位置
- 爬虫推特数据分析的外文文献_13天让你学会爬虫分布式,说到让你做到择推出it届附教程...
- jquery 操作CSS总结
- 51nod 1158 全是1的最大子矩阵(单调栈 ,o(n*m))