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相关推荐

  1. 通过反射动态修改自定义注解属性值

    通过反射动态修改自定义注解属性值 java/lang/reflect 这个包下面都是Java的反射类和工具. Annotation 注解,也是位于这个包里的. 注解自从Java 5.0版本引入后,就成 ...

  2. 动态修改参数cron的值来实现Spring自带定时器动态的执行任务

    最近在做一个项目二次开发:安防系统中用到了Spring自带的定时器,本来已经实现了.但是考虑到最终会在多家保安公司上线,所以可能每家公司要求执行的定时器任务的执行周期是不会一样的,起初想着直接同意规定 ...

  3. IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题

    IDEA解决Maven项目编译后classes文件中没有.xml或.properties问题 方式一.在 pom.xml 中添加下面的代码 <build><!--解决Maven项目编 ...

  4. 如何在log4j.properties文件中使用相对路径

    来源:http://hi.baidu.com/eredlab/blog/item/f6c1a5efe44a1af9cf1b3e17.html 写在最前面: log4j是一个应用非常广泛的Java日志组 ...

  5. SpringMVC通过注解方式读取properties文件中的值

    为什么80%的码农都做不了架构师?>>>    本方法是结合Java配置及XML配置来完成. 首先定义XML配置文件 app.xml: <?xml version=" ...

  6. 修改.fig文件中图的x轴或y轴的标题及数据图

    修改.fig文件中图片的x轴或y轴的标题 f=gcf; f.Children(2).XLabel.String='new xlbel' %这里假设操作对象是子图2 f.Children(2).Xlab ...

  7. SpringMVC+HibernateValidator,配置在properties文件中的错误信息回显前端页面出现中文乱码

    问题: 后台在springMVC中使用hibernate-validator做参数校验的时候(validator具体使用方法见GOOGLE),用properties文件配置了校验失败的错误信息.发现回 ...

  8. 九、装配bean--通过properties文件注入值

    一.建立com.util下建立db.properties文件 name=root driver=com.mysql.jdbc.Driver url=jdbc\:mysql\://localhost\: ...

  9. java的properties文件中的换行书写

    我们经常在properties文件中设置属性的时候,如果某一个属性的值太长,那么查看就不太方便,但是又不能直接的换行,否则读取属性的值的时候其换行部分就被忽略了.其实我们可以通过增加一个\符号来达到换 ...

最新文章

  1. SQL2K数据库开发二之查看和修改Sample数据库
  2. 如何使用SAP零售系统中的LISTING?【中英文对照版】
  3. CentOS 7.x 远程重装
  4. Symantec Backup Exec System Recovery还原向导
  5. Python Scipy 科学计算库
  6. python中from import用法_python学习--Python之import与from...import的区别与用法
  7. 前端有用JavaScript技巧
  8. 为QT的Webkit 编写插件
  9. Adobe下周将推新补丁和新的更新模式
  10. 设置MyEclipse编码、补全快捷键、字体大小
  11. bay——RAC_ASM ORA-15001 diskgroup DATA does not exist or is not mounted.docx
  12. python使用Jpype调用java程序
  13. Sun Studio 12 Update 1:C++ 用户指南
  14. java判断数的奇偶性_判断一个数的奇偶性
  15. 密码太多不知道怎么记录?不如自己写个密码箱小程序
  16. 存储卡的相关标准.CF.SD.SDHC.MMC.TF
  17. iPhone iOS升级完美指南
  18. 数据库--循环语句:for循环
  19. ch.ethz.ganymed包ganymed-ssh2的使用
  20. 消防应急照明系统在某数据中心项目的应用

热门文章

  1. 【数据结构与算法】之深入解析“将有序数组转换为二叉搜索树”的求解思路与算法示例
  2. HarmonyOS之AI能力·助手类意图识别
  3. hive中如何进行按周计算
  4. 编程语言是从哪蹦出来的——大型伦理寻根现场
  5. 计算机精英协会考核题 —— 第三题:斐波那契数
  6. 【Tools】Windows下Git 2.18安装步骤
  7. python中的位置怎么看_如何知道项目在Python有序字典中的位置
  8. 爬虫推特数据分析的外文文献_13天让你学会爬虫分布式,说到让你做到择推出it届附教程...
  9. jquery 操作CSS总结
  10. 51nod 1158 全是1的最大子矩阵(单调栈 ,o(n*m))