本篇文章給大家分享的是有關(guān)如何進(jìn)行mavenprofile動(dòng)態(tài)選擇配置文件,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
成都創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站設(shè)計(jì),網(wǎng)站設(shè)計(jì),網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。十余年品質(zhì),值得信賴!一、背景
在開(kāi)發(fā)過(guò)程中,我們的軟件會(huì)面對(duì)不同的運(yùn)行環(huán)境,比如開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境,而我們的軟件在不同的環(huán)境中,有的配置可能會(huì)不一樣,比如數(shù)據(jù)源配置、日志文件配置、以及一些軟件運(yùn)行過(guò)程中的基本配置,那每次我們將軟件部署到不同的環(huán)境時(shí),都需要修改相應(yīng)的配置文件,這樣來(lái)回修改,很容易出錯(cuò),而且浪費(fèi)勞動(dòng)力。
maven提供了一種方便的解決這種問(wèn)題的方案,就是profile功能。
二、profile簡(jiǎn)介
profile可以讓我們定義一系列的配置信息,然后指定其激活條件。這樣我們就可以定義多個(gè)profile,然后每個(gè)profile對(duì)應(yīng)不同的激活條件和配置信息,從而達(dá)到不同環(huán)境使用不同配置信息的效果。
profile定義的位置
(1)針對(duì)于特定項(xiàng)目的profile配置我們可以定義在該項(xiàng)目的pom.xml中。(下面舉例是這種方式)
(2) 針對(duì)于特定用戶的profile配置,我們可以在用戶的settings.xml文件中定義profile。該文件在用戶家目錄下的“.m2”目錄下。
(3)全局的profile配置。全局的profile是定義在Maven安裝目錄下的“conf/settings.xml”文件中的。
三、配置動(dòng)態(tài)打包
1、配置profile
在項(xiàng)目的profile中添加如下的profile配置:
這里定義了三個(gè)環(huán)境,分別是dev(開(kāi)發(fā)環(huán)境)、beta(測(cè)試環(huán)境)、release(發(fā)布環(huán)境),其中開(kāi)發(fā)環(huán)境是默認(rèn)激活的(activeByDefault為true),這樣如果在不指定profile時(shí)默認(rèn)是開(kāi)發(fā)環(huán)境,也在package的時(shí)候顯示指定你要選擇哪個(gè)開(kāi)發(fā)環(huán)境,詳情見(jiàn)后面。
2、配置文件
針對(duì)不同的環(huán)境,我們定義了不同的配置文件,文件目錄如下:
如圖所示,開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境的配置文件分別放到src/main/resources目錄下的config文件夾下。
config下有多個(gè)環(huán)境的配置文件,命名規(guī)則為是application-環(huán)境名稱.properties。
處理過(guò)程:
1)通過(guò)profile選中你要使用的環(huán)境
2)通過(guò)package命令,將環(huán)境變量注入到application.properties中(這樣子,那些公用的環(huán)境變量就不用在各個(gè)環(huán)境的配置文件中配置了)
3)項(xiàng)目中加載application.xml文件
加載配置文件
例子:
application-beta.properties文件有如下部分內(nèi)容:
env.datasource.jdbcUrl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true&autoReconnect=true&zeroDateTimeBehavior=roundenv.datasource.username=rootenv.datasource.password=12233
application.properties有部分如下內(nèi)容用于注入上面的內(nèi)容:
datasource.jdbcUrl=${env.datasource.jdbcUrl}datasource.username=${env.datasource.username}datasource.password=${env.datasource.password}
3、maven資源插件配置
在pom.xml的build結(jié)點(diǎn)下,配置資源文件的位置,如下所示:
這里注意一個(gè)參數(shù)
4、激活profile
1)默認(rèn)的激活
上面的profile配置中設(shè)置的默認(rèn)的激活環(huán)境。如下面所示
2)使用-P參數(shù)顯示激活一個(gè)profile
當(dāng)我們?cè)谶M(jìn)行Maven操作時(shí)就可以使用-P參數(shù)顯示的指定當(dāng)前激活的是哪一個(gè)profile了。比如我們需要在對(duì)項(xiàng)目進(jìn)行打包的時(shí)候使用id為dev的profile,我們就可以這樣做:
mvn package –Pdev
這里假設(shè)dev是在settings.xml中使用dev標(biāo)記的處于激活狀態(tài)的profile,那么當(dāng)我們使用“-P !profile”的時(shí)候就表示在當(dāng)前操作中該profile將不處于激活狀態(tài)。
5、調(diào)用
private Logger logger = LogManager.getLogger(MyApp.class.getName());
其他的使用和log4j的是一樣的。
四、遇到的坑
在application.xml文件中不能出現(xiàn)@關(guān)鍵字,就算你注釋了也不行。當(dāng)出現(xiàn)@了,之后的所有環(huán)境變量將不會(huì)被注入
以上就是如何進(jìn)行mavenprofile動(dòng)態(tài)選擇配置文件,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。