開發(fā)和運(yùn)維那點(diǎn)事

今天運(yùn)維和開發(fā)就環(huán)境切換問題展開了一次小小的爭論
maven打包之前配置文件是這樣的:

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網(wǎng)定制,網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。

<context:property-placeholder location="classpath:filters/${env}.properties" />
<import resource="classpath:spring/applicationContext-service.xml" />
...
此時所有import進(jìn)來的xml里面的${xxx}引用還在

maven打包之后是這樣的:

<context:property-placeholder location="classpath:filters/test.properties" />
<import resource="classpath:spring/applicationContext-service.xml" />
...
此時所有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)目中,修改配置文件里的一個字母,就能從a環(huán)境切換到b環(huán)境

這就要求所有import進(jìn)來的xml文件在打包的時候不能被替換${xxx}引用值,保持源碼狀態(tài),開發(fā)就實(shí)現(xiàn)${xxx}在打包后不被替換實(shí)現(xiàn)了一套方案如下:
創(chuàng)建一個中間文件config.properties,配置成這樣

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

這樣配置完成之后是這樣的,打包之后config.properties文件中會被替換成具體環(huán)境值,其他所有的xml文件保持不變,web容器啟動的時候會從config.properties中讀取對應(yīng)的值,也是實(shí)現(xiàn)了多環(huán)境

這運(yùn)維又說了這xml文件中的${temp.xxx}是沒有被替換,但是還是不能方便的切換環(huán)境,要修改config.properties中所有的配置才行,就此展開一場沒休止的爭論。。。

解決方案:
實(shí)現(xiàn)這種不從新打包,拿一套新的配置,修改一個字母就能切換環(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>

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

這樣配置就能實(shí)現(xiàn)效果。

當(dāng)前文章:開發(fā)和運(yùn)維那點(diǎn)事
標(biāo)題網(wǎng)址:http://muchs.cn/article42/ihiehc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、關(guān)鍵詞優(yōu)化、網(wǎng)站導(dǎo)航、網(wǎng)站制作、定制開發(fā)動態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司