两种针对不同环境切换配置文件的总结

前两周接了一个项目代码,得知此项目发布到生产和测试环境是手动替换配置文件,我们的环境是用jenkins发布的,这个时候就涉及到了根据不同环境切换配置文件,其次这个项目是父子模块的方式,还涉及到了用jenkins单独给子模块打包的命令。所以今天总结了两种根据不同环境自动切换配置文件的方式。

我们假设现在有三种环境:development(本地开发) 、 test(测试环境)、production(生产环境)

第一种我觉得简单的一种,使用maven的profile 参数:

在src/main/resources下创建三个目录来更加规范的放置我们的配置文件在pom.xml中配置profile

两种针对不同环境切换配置文件的总结_第1张图片

箭头画的对应的地方名字要相对应,在pom.xml的build节点中添加:

两种针对不同环境切换配置文件的总结_第2张图片

true节点的意思是默认使用的配置文件,这里默认的是开发的配置文件。

配置完之后更新一下pom.xml发现idea的Maven Proiect中增加了profiles选项,并且默认的development打了勾,这样我们install的时候就可以选择加载某个环境下的配置文件了,如果想加载test下就可以将test打勾,development取消勾选。

两种针对不同环境切换配置文件的总结_第3张图片

使用jenkins配置的时候 输入的打包命令为(mvn) clean install -Ptest/-Pproduction/-Pdevelopment  就会默认的只编译对应环境的配置文件

第二种使用spring的profiles配置 + tomcat设置运行环境:

创建一个spring的配置文件,我这里叫spring-deploy.xml:

两种针对不同环境切换配置文件的总结_第4张图片

将不同环境的配置文件已不同的名称命名,定义三个profile: development、test、production;

在web.xml中指定默认的profile

两种针对不同环境切换配置文件的总结_第5张图片

配置spring启动时可以加载到该配置文件 我的名称叫spring-deploy.xml

两种针对不同环境切换配置文件的总结_第6张图片

配置好之后 idea中设置tomcat的启动参数:

两种针对不同环境切换配置文件的总结_第7张图片

-Dspring.profiles.active="test"则使用生产环境的配置文件 同理将参数换为production /development则会对应切换

如果是linux中的tomcat则设置catalina.sh中则设置:JAVA_OPTS="-Dspring.profiles.active=test"

这种方式在jenkins打包的命令的时候只需要 clean install就可以了 没有多余的指定环境的操作

       两种方式对比:maven的方式貌似更简单一些,maven在打包的过程中只会编译相应环境的配置文件,spring profiles的方式会将所有的环境文件编译,在使用过程中加以区分。

 

对于父子项目中单独给子模块打包的mvn命令(适用于jenkins发布项目的时候按照需要使用):

mvn install -pl abc -am     单独构建 abc模块 以及abc的依赖模块

mvn  install -pl abc -am -amd  单独构建 abc模块 以及依赖abc的模块

 

 

 

你可能感兴趣的:(java)