maven 根据P参数值打包动态修改properties文件中值或一定properties
需求:由于最近开发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 根据P参数值打包动态修改properties文件中值或一定properties的更多相关文章
- 动态修改css文件中,具体的class中的个别属性值。
function setStyleSheetObjCssClassProperty(pStyleSheetObj, pSelectorText, pProperty, pValue) { var pS ...
- Day14_85_通过反射机制修改Class的属性值(IO+Properties)动态修改
通过反射机制修改Class的属性值(IO+Properties)动态修改 import java.io.FileInputStream; import java.io.FileNotFoundExce ...
- ASP.NET MVC程序中动态修改form的Action值
在练习ASP.NET MVC时,为了实现一个小功能,POST数据至服务器执行时,需要动态修改form的action值. 下面Insus.NET列举一个例子来演示它.让它简单,明白易了解. 你可以在控制 ...
- JS动态修改微信浏览器中的title
JS动态修改微信浏览器中的title我们的原理是设置一个ifame然后我们再加载一下就可以实现了,具体的例子如下所示. 平时使用JS修改title,直接document.title=新标题就好了 这样 ...
- 向properties文件中写入信息(针对获取properties文件失败的总结)
前段时间项目需要将某个属性动态的写入项目发布路径下的properties文件中;但是实际发布时发现找不到maven项目resource路径下的project.properties文件,调试多次代码如下 ...
- springboot使用@Value注入properties文件中的值,中文乱码
最近开发一个需求,讲一个中文值配置在properties文件中,然后代码中使用@Value注解进行注入使用,然而出现了如下状况: 中文出现乱码,将代码修改如下: String str = new St ...
- spring通过静态方法获得properties文件的值
获得spring bean方法 @Component public class BeanUtils implements ApplicationContextAware { private stati ...
- properties文件中中文不能显示或者中文乱码
1.properties 文件中文乱码问题 鼠标“右击”文件 => Resource => Text file encoding => UTF-8 2.properties 文件解析 ...
- SpringMVC+HibernateValidator,配置在properties文件中的错误信息回显前端页面出现中文乱码
问题: 后台在springMVC中使用hibernate-validator做参数校验的时候(validator具体使用方法见GOOGLE),用properties文件配置了校验失败的错误信息.发现回 ...
随机推荐
- golang学习之go简单博客应用
先说说golang的语法吧,个人觉得有以下特点: 简洁,不管是变量.方法声明,还是代码编写,均十分简洁,效率也比较高 非纯粹面向对象,但是go的struct类似c的struct,go的结构体还可以进行 ...
- .NET MVC Scripts.Render 上下文不存在问题解决方法
要想使用 @Scripts.Render(),就要用到 BundleConfig.cs 这个类,在App_Start目录下新建一下这个类, 类的内容如下: 使用这个类需要引入 using System ...
- IntelliJ IDEA 快捷键(二)(window版)
一.重构 1.重构变量 修改变量名称,即重命名.快捷键 Shift + F6 ,位于 Refactor 中. 2.重构方法 可以增加变量个数.快捷键 Ctrl + F6 ,位于 Refactor 中. ...
- Java 异常的处理方式--throws和try catch
异常的第一种处理方式throws. 看以下例子: import java.io.*;public class ExceptionTest04{ public static void main(Stri ...
- HDU 2167 Pebbles 状态压缩dp
Pebbles Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- orderby与groupby同时使用
两个同时使用:要求排序其他字段 select c1,max(c2) as a from table group by c1 order by a; in查询按照排序结果: ,,,....)
- C Primer Plus note3
上面的源代码为什么输入q的时候,程序就会退出呢? while(条件语句),status == 1是条件语句,status只要是非0值的时候,status == 1的条件就满足,程序就会运行while循 ...
- IoDH 实现的单例模式
饿汉式单例类不能实现延迟加载,不管将来用不用始终占据内存:懒汉式单例类线程安全控制烦琐,而且性能受影响.有种更好的单例模式叫做Initialization Demand Holder (IoDH)的技 ...
- JQ中的FormData对象 ajax上传文件
HTML代码: <form enctype="multipart/form-data" method="POST" name="searchfo ...
- 最长公共子序列(LCS)思维导图