利用maven的profile功能直接打包不同环境的配置文件(附例子下载)
By:Roy.LiuLast updated:2015-01-15
最近刚接手一个历史遗留的应用,打包的时候采用了很古老的方式,用maven 打包成war包,然后到生产环境解压之后,逐个替换配置文件中的值,但这个应用是分布式的,是有几个小应用组成的,所以一旦修改配置文件,得分别到几个应用里面修改。而且几个系统有依赖关系的。毕竟是分布式部署的。姑且不管如何部署,就修改配置文件这点来说,我就不满意了。因为产品生产环境也是我们自己可以控制的,所以完全可以在打包前就准备好。但由于生产环境与开发环境的配置是不一样的。所以完全可以提前准备好需要变化的值作为属性,在打包时去替换配置文件中的变量就好了,maven 的 profile 就具备这样的功能,所以做了一个例子,给team 成员,让他们去效仿完成.
在profile下建立几个文件夹,分别代表dev,sit,uat等环境用到的参数,配置在config.properties 文件中. 用这些配置去替换 src/main/resources/ 中的配置文件
src/main/resources/ 中的配置文件
看 maven 的配置 pom.xml
在里面配置了 profiles, 分别为击中环境做了配置,其中默认了是dev , 所以如果在没有制定采用哪种环境的情况下,是用dev 的配置文件去替换,所以要注意.
采用这种方式,配置适当的 resources 以及filter ,include, exclude ,几乎可以对任何文件做替换,一般常用的是 .properties, xml 文件,甚至 java 源代码都可以替换.
提供源代码下载:
maven replace properties files.
在profile下建立几个文件夹,分别代表dev,sit,uat等环境用到的参数,配置在config.properties 文件中. 用这些配置去替换 src/main/resources/ 中的配置文件
src/main/resources/ 中的配置文件
# database connection configurations driverClassName=${driverClassName} validationQuery=${validationQuery} #DEVELOP jdbc_url=${jdbc_url} jdbc_username=${jdbc_username} jdbc_password=${jdbc_password}
看 maven 的配置 pom.xml
4.0.0 com.isprint mavenReplaceTest war 0.0.1-SNAPSHOT mavenReplaceTest Maven Webapp http://maven.apache.org UTF-8 log4j log4j 1.2.16 dev true dev profiles/${build.profile.id}/config.properties true src/main/resources test test profiles/${build.profile.id}/config.properties true src/main/resources maven-properties-filtering org.apache.maven.plugins maven-assembly-plugin 2.2.1 src/main/assembly/assembly.xml org.apache.maven.plugins maven-jar-plugin 2.3.1 true lib/ HelloWorldApp
在里面配置了 profiles, 分别为击中环境做了配置,其中默认了是dev , 所以如果在没有制定采用哪种环境的情况下,是用dev 的配置文件去替换,所以要注意.
采用这种方式,配置适当的 resources 以及filter ,include, exclude ,几乎可以对任何文件做替换,一般常用的是 .properties, xml 文件,甚至 java 源代码都可以替换.
提供源代码下载:
maven replace properties files.
From:一号门
Previous:一个人的陌生都市--思绪乱飞
COMMENTS