一文詳解Maven的setting文件
前言
maven 是目前java 常見的一款包管理工具,通過 maven 我們可以很方便的對項目進(jìn)行編譯、打包、部署等操作。
setting.xml 文件是 Maven 的主要配置文件,它包含了 Maven 運(yùn)行時需要的配置信息。這個文件通常位于~/.m2/目錄下。我們也可以手動指定,如下(idea舉例):
通過 setting 配置文件,我們可以改變參數(shù)項,來控制以上操作的具體行為,接下來我們將具體講講 settting 配置文件
結(jié)構(gòu)
setting.xml 整體結(jié)構(gòu)如下:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository/> <interactiveMode/> <usePluginRegistry/> <offline/> <pluginGroups/> <servers/> <mirrors/> <proxies/> <profiles/> <activeProfiles/> </settings>
下面是各個元素的含義:
- localRepository:本地倉庫的位置,如果沒有設(shè)置,Maven會使用默認(rèn)的~/.m2/repository。
- interactiveMode:交互模式的開關(guān),如果設(shè)置為true,Maven會在需要輸入時提示用戶。
- usePluginRegistry:是否使用插件注冊表,如果設(shè)置為true,Maven會使用~/.m2/plugin-registry.xml文件。
- offline:離線模式的開關(guān),如果設(shè)置為true,Maven不會嘗試連接網(wǎng)絡(luò)。
- pluginGroups:插件組列表,Maven會在這些組中搜索插件。
- servers:定義了一些服務(wù)器的配置,包括服務(wù)器的 ID、用戶名和密碼。這些服務(wù)器通常用于發(fā)布(deploy)項目。
- mirrors:鏡像配置,可以設(shè)置Maven從哪個鏡像站點(diǎn)下載依賴。
- proxies:代理配置,可以設(shè)置Maven通過哪個代理服務(wù)器連接網(wǎng)絡(luò)。
- profiles:配置文件,可以包含一組特定的設(shè)置,如特定的代理服務(wù)器、鏡像站點(diǎn)等。
- activeProfiles:激活的配置文件列表,Maven會使用這些配置文件中的設(shè)置。
值得注意的是,settings.xml文件中的設(shè)置可以被pom.xml文件中的設(shè)置覆蓋。
重點(diǎn)結(jié)構(gòu)說明
localRepository
用于指定本地倉庫位置,即 jar 包下載存儲的位置(使用時優(yōu)先從本地倉庫加載,沒有時再去遠(yuǎn)程倉庫加載)
<localRepository>D:\xxx\mvn\repository</localRepository>
server
一般用于定義遠(yuǎn)程私服
的認(rèn)證信息:
<server> <id>releases</id> <username>zhangsan</username> <password>123456</password> </server>
在這個示例中,我們定義了一個服務(wù)器,其ID為releases,用戶名為zhangsan,密碼為123456。
然后,就可以在pom.xml文件中引用這個服務(wù)器。例如,如果你想從這個服務(wù)器下載依賴,可以這樣配置:
<repositories> <repository> <id>releases</id> <url>http://example.com/repo</url> </repository> </repositories>
或者,如果你想把項目部署到這個服務(wù)器,你可以這樣配置:
<distributionManagement> <repository> <id>releases</id> <url>scp://example.com/path/to/repo</url> </repository> </distributionManagement>
在這兩個例子中,元素的值與settings.xml文件中的服務(wù)器ID相匹配,所以Maven會使用對應(yīng)的用戶名和密碼進(jìn)行身份驗證。
注意:出于安全考慮,不建議在settings.xml文件中明文存儲密碼。你可以使用Maven的密碼加密功能來加密密碼。
如果定義了多個 repository
,maven 會如何選擇?
Maven會按照它們在pom.xml文件中的順序來使用這些倉庫。
當(dāng)Maven需要下載一個依賴或插件時,它會首先從第一個倉庫嘗試下載。如果第一個倉庫中沒有這個依賴或插件,或者下載失敗,那么Maven會嘗試從第二個倉庫下載,以此類推,直到下載成功或者所有的倉庫都嘗試過。
mirrors
定義了一些鏡像的配置,包括鏡像的 ID、名稱和 URL,通常用于下載依賴:
<mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>
在這個示例中,我們定義了一個鏡像站點(diǎn),其ID為alimaven,URL為maven.aliyun.com/nexus/conte…
當(dāng)Maven需要從central倉庫下載依賴時,它會檢查settings.xml文件中的鏡像配置,如果找到了匹配的鏡像,它會從鏡像站點(diǎn)下載依賴,而不是從原始倉庫下載。
元素的值可以是一個倉庫ID,也可以是一個倉庫ID的列表,用逗號分隔。如果值為*
,表示這個鏡像是所有倉庫的鏡像。
值得注意的是:如果你定義了多個匹配的鏡像,Maven會使用第一個匹配的鏡像。
通常用于配置公開的、不需要身份驗證的鏡像站點(diǎn)。這些鏡像站點(diǎn)是公開倉庫的復(fù)制品,用于加快下載速度和提高可用性,然而,有些鏡像站點(diǎn)可能需要身份驗證,如:
鏡像站點(diǎn)是私有的,只對特定的用戶或組織開放。
鏡像站點(diǎn)提供了付費(fèi)的高級服務(wù),需要用戶登錄才能使用。
這里也借助 server 提供認(rèn)證信息:
<servers> <server> <id>alimaven</id> <username>myuser</username> <password>mypassword</password> </server> </servers>
Maven會根據(jù)mirror
元素的id
查找對應(yīng)的server
元素,并使用其中的認(rèn)證信息。
profiles
profiles
元素用于定義一組特定的項目設(shè)置,這些設(shè)置只有在特定的條件滿足時才會生效。
每個profile
元素定義了一組設(shè)置,這些設(shè)置可以包括目標(biāo)環(huán)境的特定配置、依賴管理、插件配置等
<profiles> <profile> <id>development</id> <repositories> <repository> <id>dev-repo</id> <url>http://dev.example.com/maven2</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>dev-plugin-repo</id> <url>http://dev.example.com/maven2</url> </pluginRepository> </pluginRepositories> </profile> </profiles>
在這個示例中,我們在development配置文件中定義了一個repositories
元素和一個pluginRepositories
元素。
repositories
元素用于定義項目的依賴倉庫。這里,我們定義了一個倉庫dev-repo,其URL為dev.example.com/maven2 當(dāng)Maven處理項目的依賴時,它會從這個倉庫下載依賴。pluginRepositories
元素用于定義項目的插件倉庫。這里,我們定義了一個插件倉庫dev-plugin-repo,其URL為dev.example.com/maven2 當(dāng)Maven處理項目的插件時,它會從這個倉庫下載插件。- 其中,
releases
和snapshots
用于控制Maven是否從這個倉庫下載release版本和snapshot版
activeProfiles
結(jié)合 pofiles
元素,activeProfiles
主要用于指定默認(rèn)激活的Profile:
<activeProfiles> <activeProfile>development</activeProfile> </activeProfiles>
到此這篇關(guān)于一文帶你深入了解Maven setting文件的文章就介紹到這了,更多相關(guān)Maven setting文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot在自定義類中調(diào)用service層mapper層方式
這篇文章主要介紹了SpringBoot在自定義類中調(diào)用service層mapper層方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03一文帶你了解Java創(chuàng)建型設(shè)計模式之原型模式
原型模式其實就是從一個對象在創(chuàng)建另外一個可定制的對象,不需要知道任何創(chuàng)建的細(xì)節(jié)。本文就來通過示例為大家詳細(xì)聊聊原型模式,需要的可以參考一下2022-09-09你必須得會的SpringBoot全局統(tǒng)一處理異常詳解
程序在運(yùn)行的過程中,不可避免會產(chǎn)生各種各樣的錯誤,這個時候就需要進(jìn)行異常處理,本文主要為大家介紹了SpringBoot實現(xiàn)全局統(tǒng)一處理異常的方法,需要的可以參考一下2023-06-06Java更新調(diào)度器(update scheduler)的使用詳解
Java更新調(diào)度器是Java中的一個特性,可以自動化Java應(yīng)用程序的更新過程,它提供了一種方便的方式來安排Java應(yīng)用程序的更新,確保其與最新的功能、錯誤修復(fù)和安全補(bǔ)丁保持同步,本文將深入介紹如何使用Java更新調(diào)度器,并解釋它對Java開發(fā)人員和用戶的好處2023-11-11java書店系統(tǒng)畢業(yè)設(shè)計 總體設(shè)計(1)
這篇文章主要介紹了java書店系統(tǒng)畢業(yè)設(shè)計,第一步系統(tǒng)總體設(shè)計,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10SpringBoot實現(xiàn)熱部署Community的示例代碼
本文主要介紹了SpringBoot實現(xiàn)熱部署Community的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06