开发和运维那点事

2019-03-29 19:03:52
今天运维和开发就环境切换问题展开了一次小小的争论
maven打包之前配置文件是这样的:

<context:property-placeholder location="classpath:filters/ e n v . p r o p e r t i e s &quot; / &gt; &lt; i m p o r t r e s o u r c e = &quot; c l a s s p a t h : s p r i n g / a p p l i c a t i o n C o n t e x t − s e r v i c e . x m l &quot; / &gt; . . . 此 时 所 有 i m p o r t 进 来 的 x m l 里 面 的 {env}.properties&quot; /&gt; &lt;import resource=&quot;classpath:spring/applicationContext-service.xml&quot; /&gt; ... 此时所有import进来的xml里面的 env.properties"/><importresource="classpath:spring/applicationContextservice.xml"/>...importxml{xxx}引用还在

maven打包之后是这样的:

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


此时所有import进来的xml里面的${xxx}引用已经被替换成具体值

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

<context:property-placeholder location=“classpath:filters/new.properties” />
直接拷贝到新的环境中运行

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

这就要求所有import进来的xml文件在打包的时候不能被替换 x x x 引 用 值 , 保 持 源 码 状 态 , 开 发 就 实 现 {xxx}引用值,保持源码状态,开发就实现 xxx{xxx}在打包后不被替换实现了一套方案如下:
创建一个中间文件config.properties,配置成这样

temp.key1= k e y 1 t e m p . k e y 2 = {key1} temp.key2= key1temp.key2={key2}
temp.key3= k e y 2 . . . 然 后 把 所 有 的 x m l 文 件 引 用 的 {key2} ... 然后把所有的xml文件引用的 key2...xml{xxx}都改成${temp.xxx}

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

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

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

src/main/resources spring/application-config.xml */.properties true src/main/resources spring/application-config.xml */.properties false

一个includes(需要过滤)配合一个excludes(不需要过滤),第一个resource表示配置文件spring/application-config.xml和*/.properties都是需要过滤的资源文件,需要替换其中的 x x x 引 用 , 第 二 个 r e s o u r c e 表 示 配 置 文 件 s p r i n g / a p p l i c a t i o n − c o n f i g . x m l 和 ∗ / . p r o p e r t i e s 以 外 的 文 件 也 是 资 源 文 件 , 但 是 不 需 要 替 换 其 中 的 {xxx}引用,第二个resource表示配置文件spring/application-config.xml和*/.properties以外的文件也是资源文件,但是不需要替换其中的 xxxresourcespring/applicationconfig.xml/.properties{xxx}引用

这样配置就能实现效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值