前言:
????最近在項(xiàng)目中使用springboot時(shí)發(fā)現(xiàn)志衣,采用在pom中定義不同的profile屯援,并且maven打包時(shí)
采用-P參數(shù)并不能替換我application.properties文件中指定占位符的問(wèn)題猛们。
配置文件布局:
在application.properties中定義整個(gè)項(xiàng)目中不同環(huán)境下共通的配置屬性念脯,并采用springboot針對(duì)配置文件的特性 -?spring.profiles.active=dev或者test
來(lái)自動(dòng)加載合并application-dev/test.properties中特有的配置的功能,開(kāi)發(fā)弯淘,測(cè)試绿店,生產(chǎn)環(huán)境配置文件命名方面需要遵守springboot的約束即可。
Maven pom 配置:
備注:實(shí)際上使用springboot庐橙,上述的<resources>標(biāo)簽假勿,以及<outputDirectory>都是不需要的,其都已經(jīng)定義過(guò)了态鳖。在這里寫出來(lái)只是為了講述maven打包的原理转培。
執(zhí)行打包命令:
? ? 進(jìn)入項(xiàng)目pom文件所在目錄,執(zhí)行
? ? mvn clean package -P test
????命令解釋:
? ? ? ? ? ? 1:執(zhí)行后會(huì)根據(jù)pom中定義的profiles標(biāo)簽尋找對(duì)應(yīng)的profile id為test的浆竭,將其properties下的子標(biāo)簽獲取到浸须,拿到key = boot.profile,value = test邦泄。放入map中
? ? ? ? ? ?:2:根據(jù) build中定義的resources標(biāo)簽删窒,開(kāi)始打包對(duì)應(yīng)的資源文件,由于指定了filtering為true顺囊,故會(huì)將上一步中得到的map中的key拿去替換resource中指定的資源文件中的占位符${key}肌索,為value值。
遇到的問(wèn)題:
執(zhí)行后查看classes文件下的資源文件特碳,發(fā)現(xiàn)并沒(méi)有替換掉
原因:
? ? 發(fā)現(xiàn)最終是因?yàn)閟pringboot導(dǎo)致的诚亚,查看其pom繼承晕换,
進(jìn)入后發(fā)現(xiàn),springboot默認(rèn)指定資源文件中的占位符為@@亡电,并不是maven默認(rèn)的 ${}
解決方案:
????1:將application.properties中的占位符由${key} -> @key@?
? ? 2:覆蓋springboot的默認(rèn)規(guī)則
? ??
? ? 3:測(cè)試了再自己的pom中不增加resource配置届巩,只是增加
也是可以的哦
建議:
? ? 既然已經(jīng)使用了springboot,就不要再用回之前的寫法了份乒,平白增加配置恕汇。