您好,登錄后才能下訂單哦!
今天運(yùn)維和開發(fā)就環(huán)境切換問題展開了一次小小的爭(zhēng)論
maven打包之前配置文件是這樣的:
<context:property-placeholder location="classpath:filters/${env}.properties" />
<import resource="classpath:spring/applicationContext-service.xml" />
...
此時(shí)所有import進(jìn)來的xml里面的${xxx}引用還在
maven打包之后是這樣的:
<context:property-placeholder location="classpath:filters/test.properties" />
<import resource="classpath:spring/applicationContext-service.xml" />
...
此時(shí)所有import進(jìn)來的xml里面的${xxx}引用已經(jīng)被替換成具體值
上面就是實(shí)現(xiàn)多環(huán)境打包的樣子,打包發(fā)布都是使勇jenkins完成,突然有一天領(lǐng)導(dǎo)說要把同樣的代碼放到另一套新的環(huán)境中去,本來可以增加一套新的properties文件完成,但是領(lǐng)導(dǎo)是跟運(yùn)維說的,運(yùn)維就想從tomcat/webapps解壓好的項(xiàng)目中改一下文件名稱,就像這樣
<context:property-placeholder location="classpath:filters/new.properties" />
直接拷貝到新的環(huán)境中運(yùn)行
運(yùn)維這樣想:我從解壓好的war項(xiàng)目中,修改配置文件里的一個(gè)字母,就能從a環(huán)境切換到b環(huán)境
這就要求所有import進(jìn)來的xml文件在打包的時(shí)候不能被替換${xxx}引用值,保持源碼狀態(tài),開發(fā)就實(shí)現(xiàn)${xxx}在打包后不被替換實(shí)現(xiàn)了一套方案如下:
創(chuàng)建一個(gè)中間文件config.properties,配置成這樣
temp.key1=${key1}
temp.key2=${key2}
temp.key3=${key2}
...
然后把所有的xml文件引用的${xxx}都改成${temp.xxx}
這樣配置完成之后是這樣的,打包之后config.properties文件中會(huì)被替換成具體環(huán)境值,其他所有的xml文件保持不變,web容器啟動(dòng)的時(shí)候會(huì)從config.properties中讀取對(duì)應(yīng)的值,也是實(shí)現(xiàn)了多環(huán)境
這運(yùn)維又說了這xml文件中的${temp.xxx}是沒有被替換,但是還是不能方便的切換環(huán)境,要修改config.properties中所有的配置才行,就此展開一場(chǎng)沒休止的爭(zhēng)論。。。
解決方案:
實(shí)現(xiàn)這種不從新打包,拿一套新的配置,修改一個(gè)字母就能切換環(huán)境
這要用到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>
一個(gè)includes(需要過濾)配合一個(gè)excludes(不需要過濾),第一個(gè)resource表示配置文件spring/application-config.xml和*/.properties都是需要過濾的資源文件,需要替換其中的${xxx}引用,第二個(gè)resource表示配置文件spring/application-config.xml和*/.properties以外的文件也是資源文件,但是不需要替換其中的${xxx}引用
這樣配置就能實(shí)現(xiàn)效果。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。