maven中profile的使用
一個(gè)項(xiàng)目可能會(huì)有不同的環(huán)境,例如dev/stating/prod等,不同的環(huán)境的配置文件是不同的,如何根據(jù)環(huán)境快速的切換到對(duì)應(yīng)的配置文件很重要。
在maven和 spring中都有一個(gè)profile的概念,下面分別說(shuō)
一. 在maven中的pom文件中的profile的作用是根據(jù)不同的環(huán)境將對(duì)應(yīng)的環(huán)境變量設(shè)置到項(xiàng)目中,如下例子
步驟一:在pom文件中寫(xiě)profile
<profiles> <profile> <!-- 開(kāi)發(fā)環(huán)境 --> <id>local</id> <properties> <env>local</env> <profileName>local</profileName> <group>LOCAL_GROUP</group> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <!-- 聯(lián)調(diào)開(kāi)發(fā)環(huán)境 --> <id>dev</id> <properties> <env>dev</env> <profileName>dev</profileName> <group>DEV_GROUP</group> </properties> </profile> <profile> <!-- 測(cè)試環(huán)境 --> <id>test</id> <properties> <env>test</env> <profileName>test</profileName> <group>TEST_GROUP</group> </properties> </profile> <profile> <!-- 預(yù)發(fā)環(huán)境 --> <id>pre</id> <properties> <env>pre</env> <profileName>pre</profileName> <group>PRE_GROUP</group> </properties> </profile> <profile> <!-- 生產(chǎn)環(huán)境 --> <id>prod</id> <properties> <env>prod</env> <profileName>prod</profileName> <group>PROD_GROUP</group> </properties> </profile> </profiles>
步驟二:設(shè)置 resources的位置和filtering為true
<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
filtering屬性為true時(shí),主要用來(lái)替換項(xiàng)目中資源文件(.xml、.properties)當(dāng)中由 ${...} 標(biāo)記的變量
步驟三:激活profile
以下兩種方式可以激活:
a. mvn package時(shí)使用-P參數(shù)來(lái)指定profile,例如mvn package -P dev,這樣就會(huì)把dev 這個(gè)profile中的變量設(shè)置到項(xiàng)目對(duì)應(yīng)的變量里面,通常是通過(guò)${}和@@來(lái)注入屬性
b.在對(duì)應(yīng)的profile標(biāo)簽里面寫(xiě)入如下標(biāo)簽,代表默認(rèn)激活的profile <activeByDefault>true</activeByDefault>
二. spring中的profile
Spring中有個(gè)注解叫做@Profile("dev"),這個(gè)注解只有在對(duì)應(yīng)的profile激活才能使用,這個(gè)profile和上面的maven中的沒(méi)關(guān)系,可以通過(guò)如下方式激活
一、啟動(dòng)Java應(yīng)用時(shí),通過(guò)-D傳入系統(tǒng)參數(shù)
-Dspring.profiles.active=dev
二、如果是web環(huán)境,可以通過(guò)上下文初始化參數(shù)設(shè)置
<context-param> <param-name>spring.profiles.active</param-name> <param-value>dev</param-value> </context-param>
三 、通過(guò)自定義添加PropertySource
Map<String, Object> map = new HashMap<String, Object>(); map.put("spring.profiles.active", "dev"); MapPropertySource propertySource = new MapPropertySource("map", map); env.getPropertySources().addFirst(propertySource);
四、直接設(shè)置Profile
env.setActiveProfiles("dev", "test");
五、通過(guò)操作系統(tǒng)的環(huán)境變量來(lái)激活
在Spring Boot項(xiàng)目中,如果事先在OS環(huán)境變量中定義了“SPRING_PROFILES_ACTIVE”,則會(huì)采用此處定義的配置文件
以上方式都可以設(shè)置多個(gè)profile,多個(gè)之間通過(guò)如逗號(hào)/分號(hào)等分隔。
到此這篇關(guān)于maven中profile的使用的文章就介紹到這了,更多相關(guān)maven profile內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- maven profile自動(dòng)切換環(huán)境參數(shù)的2種方法詳解
- 使用maven profile指定配置文件打包適用多環(huán)境的方法
- Maven管理SpringBoot Profile詳解
- 詳解Maven profile配置管理及激活profile的幾種方式
- maven的pom.xml中profiles的作用詳解
- maven多profile 打包下 -P參和-D參數(shù)的實(shí)現(xiàn)
- Maven 多profile及指定編譯問(wèn)題的解決
- 詳解maven中profiles使用實(shí)現(xiàn)
- maven profile實(shí)現(xiàn)多環(huán)境配置的示例
- maven profile動(dòng)態(tài)選擇配置文件詳解
- Maven profile實(shí)現(xiàn)不同環(huán)境的配置管理實(shí)踐
相關(guān)文章
java使用TimerTask定時(shí)器獲取指定網(wǎng)絡(luò)數(shù)據(jù)
java.util.Timer定時(shí)器,實(shí)際上是個(gè)線(xiàn)程,定時(shí)調(diào)度所擁有的TimerTasks。一個(gè)TimerTask實(shí)際上就是一個(gè)擁有run方法的類(lèi),需要定時(shí)執(zhí)行的代碼放到run方法體內(nèi),TimerTask一般是以匿名類(lèi)的方式創(chuàng)建,下面的就用示例來(lái)學(xué)習(xí)他的使用方法2014-01-01Java并發(fā)編程ReentrantReadWriteLock加讀鎖流程
這篇文章主要介紹了Java并發(fā)編程ReentrantReadWriteLock加讀鎖流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05Java中BufferedReader類(lèi)獲取輸入輸入字符串實(shí)例
這篇文章主要介紹了Java中BufferedReader類(lèi)獲取輸入輸入字符串實(shí)例,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02一文帶你搞懂Java中線(xiàn)程的創(chuàng)建方式
這篇文章主要為大家詳細(xì)介紹了Java中線(xiàn)程的創(chuàng)建方式的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解一下2023-03-03Java基礎(chǔ)教程之理解Annotation詳細(xì)介紹
這篇文章主要介紹了Java基礎(chǔ)教程之理解Annotation詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-01-01SpringBoot服務(wù)端數(shù)據(jù)校驗(yàn)過(guò)程詳解
這篇文章主要介紹了SpringBoot服務(wù)端數(shù)據(jù)校驗(yàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02SpringBoot使用Sharding-JDBC實(shí)現(xiàn)數(shù)據(jù)分片和讀寫(xiě)分離的方法
本文主要介紹了SpringBoot使用Sharding-JDBC實(shí)現(xiàn)數(shù)據(jù)分片和讀寫(xiě)分離,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10完美解決java讀取大文件內(nèi)存溢出的問(wèn)題
下面小編就為大家?guī)?lái)一篇完美解決java讀取大文件內(nèi)存溢出的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08