深入講解Java Maven配置
由于maven 使用上手很容易所以很多時候可以囫圇吞棗能夠使用就可以了,由于作者最近在做的持續(xù)集成的代碼掃描的時候,發(fā)現(xiàn)私有云里面大型工程maven依賴,如果沒有弄清楚里面的配置復(fù)雜的項目很難在私有環(huán)境里面正常的編譯過。下面作者根據(jù)自己的經(jīng)驗談?wù)劤S玫呐渲玫淖饔玫降资鞘裁础?/p>
首先說明maven配置都是那些配置
1. pom.xml 配置
pom.xml 配置主要分為兩類,一類是用于配置自己的實際依賴, 二類僅僅用于聲明一些版本和倉庫便于版本管理和發(fā)布。
在我們java工程里面有一個pom.xml 這里面主要配置工程的依賴庫,pom配置是可以被繼承的,如果是父級依賴一般是做版本控制以及指定私有倉庫的。如下圖: 下圖主要是展示父pom 主要作用是版本控制以及私有倉庫指定。


重點(diǎn)來了:
上圖repository的id的作用是啥(作者當(dāng)時很是迷惑,可以亂寫那要id干啥),這個id實際會和maven settings.xml 的配置文件里面的mirrors 配置有關(guān)。
2. maven 的settings.xml
下面重點(diǎn)講一下settings的配置

如圖settings 主要有mirrors servers 和profiles 三部分組成。
a. mirrors
mirrors 主要作用是一個鏡像代理,便于內(nèi)外網(wǎng)廠庫切換,或者單獨(dú)配置內(nèi)網(wǎng)使用。
如果pom中的repository的id能和mirrorOf的值關(guān)聯(lián)上,那么url以mirror的為準(zhǔn),否則以repository中自己的url為準(zhǔn)。
<mirror>
<id>test-nexus</id>
<mirrorOf>*</mirrorOf>
<name>sugon local repository</name>
<url>http://172.22.5.34:9996/repository/sugoncloud-public/</url>
</mirror>
mirrorof 有三種值:
* 代表 所有倉庫請求都走這個配置的鏡像代理。
central 默認(rèn)是maven 的倉庫,如果其它鏡像訪問不到(這里是服務(wù)訪問不到而不是沒有依賴包)。
其它: 比如test 、native-repo 這些關(guān)聯(lián)的是pom里面配置的私有倉庫id。
b. servers
servers 里面的配置 如下:
<server>
<id>nexus-releases</id>
<username>deployment</username>
<password>deployment123</password>
</server>
這個配置的作用是它關(guān)聯(lián)pom里面配置私有倉庫的id, 在推送依賴包的使用根據(jù)id作認(rèn)證的。
c. profiles
profiles 主要是配置全局私用倉庫。就不詳解了,和pom類似配置如下:
<profile>
<id>nexus-aliyun</id>
<repositories>
<repository>
<id>public</id>
<name>Public Repositories</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>Public Repositories</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</profile>
補(bǔ)充一個最重要的: 由于上文說到的父pom(版本控制) 子工程依賴就是依賴的父pom文件而不是jar包 如果只配置mirrors 是不能拉取父pom文件的,如果需要拉取父pom文件那么需要配置repository。
最后敬上參考地址:
Maven settings.xml中私有倉庫配置淺析 - 簡書
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
java中JSONObject轉(zhuǎn)換為HashMap(方法+main方法調(diào)用實例)
這篇文章主要介紹了java中JSONObject轉(zhuǎn)換為HashMap(方法+main方法調(diào)用實例),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
java中char類型轉(zhuǎn)換成int類型的2種方法
這篇文章主要給大家介紹了關(guān)于java中char類型轉(zhuǎn)換成int類型的2種方法,因為java是一門強(qiáng)類型語言,所以在數(shù)據(jù)運(yùn)算中會存在類型轉(zhuǎn)換,需要的朋友可以參考下2023-07-07
spring boot中使用RabbitMQ routing路由詳解
本篇文章主要介紹了spring boot中使用RabbitMQ routing路由詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-03-03
由淺到深帶你詳談Java實現(xiàn)數(shù)組擴(kuò)容的三種方式
這篇文章主要詳細(xì)介紹了Java實現(xiàn)數(shù)組擴(kuò)容的三種方式,新建一個數(shù)組,把原來數(shù)組的內(nèi)容搬到新數(shù)組中,使用system.arraycopy(),使用java.util.Arrays.copyOf()這三種方式,具有一定的參考價值,需要的朋友可以借鑒一下2023-06-06

