博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开发和运维那点事
阅读量:6264 次
发布时间:2019-06-22

本文共 1838 字,大约阅读时间需要 6 分钟。

今天运维和开发就环境切换问题展开了一次小小的争论

maven打包之前配置文件是这样的:

<context:property-placeholder location="classpath:filters/${env}.properties" />

<import resource="classpath:spring/applicationContext-service.xml" />
...
此时所有import进来的xml里面的${xxx}引用还在

maven打包之后是这样的:

<context:property-placeholder location="classpath:filters/test.properties" />

<import resource="classpath:spring/applicationContext-service.xml" />
...
此时所有import进来的xml里面的${xxx}引用已经被替换成具体值

上面就是实现多环境打包的样子,打包发布都是使勇jenkins完成,突然有一天领导说要把同样的代码放到另一套新的环境中去,本来可以增加一套新的properties文件完成,但是领导是跟运维说的,运维就想从tomcat/webapps解压好的项目中改一下文件名称,就像这样

<context:property-placeholder location="classpath:filters/new.properties" />

直接拷贝到新的环境中运行

运维这样想:我从解压好的war项目中,修改配置文件里的一个字母,就能从a环境切换到b环境

这就要求所有import进来的xml文件在打包的时候不能被替换${xxx}引用值,保持源码状态,开发就实现${xxx}在打包后不被替换实现了一套方案如下:

创建一个中间文件config.properties,配置成这样

temp.key1=${key1}

temp.key2=${key2}
temp.key3=${key2}
...
然后把所有的xml文件引用的${xxx}都改成${temp.xxx}

这样配置完成之后是这样的,打包之后config.properties文件中会被替换成具体环境值,其他所有的xml文件保持不变,web容器启动的时候会从config.properties中读取对应的值,也是实现了多环境

这运维又说了这xml文件中的${temp.xxx}是没有被替换,但是还是不能方便的切换环境,要修改config.properties中所有的配置才行,就此展开一场没休止的争论。。。

解决方案:

实现这种不从新打包,拿一套新的配置,修改一个字母就能切换环境
这要用到maven打包resources配置:

<resource>

<directory>src/main/resources</directory>
<includes>
<include>spring/application-config.xml</include>
<include>*/.properties</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>spring/application-config.xml</exclude>
<exclude>*/.properties</exclude>
</excludes>
<filtering>false</filtering>
</resource>

一个includes(需要过滤)配合一个excludes(不需要过滤),第一个resource表示配置文件spring/application-config.xml和*/.properties都是需要过滤的资源文件,需要替换其中的${xxx}引用,第二个resource表示配置文件spring/application-config.xml和*/.properties以外的文件也是资源文件,但是不需要替换其中的${xxx}引用

这样配置就能实现效果。

转载于:https://blog.51cto.com/wangguangshuo/2371452

你可能感兴趣的文章
20.pipe
查看>>
.NET Entity Framework入门操作
查看>>
iOS-集成微信支付和支付宝支付
查看>>
SAP
查看>>
读掘金小册组件精讲总结2
查看>>
MVC项目中怎样用JS导出EasyUI DataGrid为Excel
查看>>
制作个人开发IDE
查看>>
给架构师骂了
查看>>
ajax提交form表单资料详细汇总
查看>>
Excel——使用INDEX和SMALL实现条件筛选
查看>>
c#迭代器 转载
查看>>
JQuery与JavaScript
查看>>
Jmeter--正则表达式提取器
查看>>
设置Slider Control 控件的取值范围
查看>>
struts2 启动tomcat时报错:org.apache.catalina.core.StandardContext filterStart
查看>>
asp.net导入后台代码
查看>>
java web dev知识积累
查看>>
Flex 经纬度匹配正则表达式
查看>>
在SSIS包中使用 Checkpoint从失败处重新启动包[转]
查看>>
为什么开通博客?
查看>>