聯(lián)系我們 - 廣告服務(wù) - 聯(lián)系電話:
您的當(dāng)前位置: > 關(guān)注 > > 正文

maven(三)最詳細(xì)的profile的使用

來源:CSDN 時(shí)間:2023-03-27 11:01:40

文章目錄

前言1. 原理2. 應(yīng)用演示2.1 項(xiàng)目結(jié)構(gòu)2.2 激活方式1. 通過maven命令參數(shù)2. 通過pom文件里的activation屬性3. settings.xml中使用activeProfiles指定(了解即可)


(相關(guān)資料圖)

前言

在開發(fā)過程中,我們的項(xiàng)目會(huì)存在不同的運(yùn)行環(huán)境,比如開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境,而我們的項(xiàng)目在不同的環(huán)境中,有的配置可能會(huì)不一樣,比如數(shù)據(jù)源配置、日志文件配置、以及一些軟件運(yùn)行過程中的基本配置,那每次我們將軟件部署到不同的環(huán)境時(shí),都需要修改相應(yīng)的配置文件,這樣來回修改,很容易出錯(cuò),而且浪費(fèi)勞動(dòng)力。        在前面的文章profile之springboot,springboot為我們提供了一種解決方案,而maven也提供了一種更加靈活的解決方案,就是profile功能。

1. 原理

1.1 先看一段pom文件中的profile定義

devdevprodprodtruetesttest

可以看到定義了多個(gè)profile,每個(gè)profile都有唯一的id,也包含properties屬性。這里為每個(gè)profile都定義一個(gè)名為profiles.active的properties,每個(gè)環(huán)境的值不同。當(dāng)我們打包項(xiàng)目時(shí),激活不同的環(huán)境,profiles.active字段就會(huì)被賦予不同的值。 1.2 結(jié)合resource屬性        這個(gè)profiles.active字段可以應(yīng)用到許多地方,及其靈活??梢栽谂渲梦募锉灰茫▍⒖即瞬┛停灰部梢越Y(jié)合pom文件里的resource和filter屬性,作為文件名的一部分或者文件夾名的一部分,下面會(huì)詳細(xì)講解這個(gè)用法。

注意:maven的profile用法有許多種,但基本原理就是根據(jù)激活環(huán)境的不同,自定義字段被賦予不同的值。

2. 應(yīng)用演示

2.1 項(xiàng)目結(jié)構(gòu)

這里定義了dev,prod,test三個(gè)文件夾,用來演示maven中profile的使用。注意,每個(gè)文件夾里還定義了application-{xxx}.properties件,這里相當(dāng)于結(jié)合springboot的Profile的使用,是我比較推薦的方式,和本文maven的profile使用無關(guān)系,在application.properties都有spring.profiles.active=xxx去加載對(duì)應(yīng)的application-{xxx}.properties。

pom文件里的關(guān)鍵配置為

org.springframework.bootspring-boot-maven-pluginrepackagetruesrc/main/resources/dev/*prod/*test/*                    messages/*-->src/main/resources/${profiles.active}devdevprodprodtruetesttest

可以看到我們利用resource屬性來配置打包時(shí),根據(jù)激活的環(huán)境來選取要打包的文件夾。我們使用maven命令

mvn clean package

prod環(huán)境被默認(rèn)激活,打包后的包結(jié)構(gòu)為 可以看到prod文件夾下的配置文件被打包進(jìn)去,通過激活不同的profile也就實(shí)現(xiàn)了動(dòng)態(tài)切換配置文件。

2.2 激活方式

profile的激活方式有很多種

1. 通過maven命令參數(shù)

即在使用maven打包時(shí)通過-P參數(shù),-P后跟上profile的唯一id,如

mvn clean package -Ptest

打包時(shí)test的profile被激活,打包后的包結(jié)構(gòu)為:

2. 通過pom文件里的activation屬性

prodprodtrue                1.5[1.5,)Windows XPWindowsx865.1.2600envtesttarget/generated-sources/axistools/wsdl2java/                        com/companyname/group

這里我寫了多種方式,可以通過activeByDefault、jdk版本、操作系統(tǒng)、系統(tǒng)環(huán)境變量(在win10我試了不成功,win7可以,不知道為啥)、文件的存在或缺失,實(shí)際項(xiàng)目可以根據(jù)需要選取一種即可。這種的優(yōu)先級(jí)低于maven命令參數(shù)指定的方式。

3. settings.xml中使用activeProfiles指定(了解即可)

即mave目錄下的settings.xml也可以添加下面的代碼來指定激活哪個(gè)profile。

profileTest1

值得注意的是1. setting.xml在當(dāng)前系統(tǒng)用戶的.m2文件夾有(如沒有可手動(dòng)拷貝過去也會(huì)生效),針對(duì)的當(dāng)前用戶的profile配置,在maven的安裝目錄下“conf/settings.xml”,針對(duì)的是全局的profile配置。2.profile也可以定義在setting.xml文件中,但是這種方式個(gè)人感覺并不實(shí)用的,不推薦。

責(zé)任編輯:

標(biāo)簽:

相關(guān)推薦:

精彩放送:

新聞聚焦
Top