由于maven 使用上手很容易所以很多時候可以囫圇吞棗能夠使用就可以了,由于作者最近在做的持續集成的代碼掃描的時候,發現私有云里面大型工程maven依賴,如果沒有弄清楚里面的配置復雜的項目很難在私有環境里面正常的編譯過。下面作者根據自己的經驗談談常用的配置的作用到底是什么。
首先說明maven配置都是那些配置
1. pom.xml 配置
pom.xml 配置主要分為兩類,一類是用于配置自己的實際依賴, 二類僅僅用于聲明一些版本和倉庫便于版本管理和發布。
在我們java工程里面有一個pom.xml 這里面主要配置工程的依賴庫,pom配置是可以被繼承的,如果是父級依賴一般是做版本控制以及指定私有倉庫的。如下圖: 下圖主要是展示父pom 主要作用是版本控制以及私有倉庫指定。
重點來了:
上圖repository的id的作用是啥(作者當時很是迷惑,可以亂寫那要id干啥),這個id實際會和maven settings.xml 的配置文件里面的mirrors 配置有關。
2. maven 的settings.xml
下面重點講一下settings的配置
如圖settings 主要有mirrors servers 和profiles 三部分組成。
a. mirrors
mirrors 主要作用是一個鏡像代理,便于內外網廠庫切換,或者單獨配置內網使用。
如果pom中的repository的id能和mirrorOf的值關聯上,那么url以mirror的為準,否則以repository中自己的url為準。
<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 默認是maven 的倉庫,如果其它鏡像訪問不到(這里是服務訪問不到而不是沒有依賴包)。
其它: 比如test 、native-repo 這些關聯的是pom里面配置的私有倉庫id。
b. servers
servers 里面的配置 如下:
<server> <id>nexus-releases</id> <username>deployment</username> <password>deployment123</password> </server>
這個配置的作用是它關聯pom里面配置私有倉庫的id, 在推送依賴包的使用根據id作認證的。
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>
補充一個最重要的: 由于上文說到的父pom(版本控制) 子工程依賴就是依賴的父pom文件而不是jar包 如果只配置mirrors 是不能拉取父pom文件的,如果需要拉取父pom文件那么需要配置repository。
最后敬上參考地址:
Maven settings.xml中私有倉庫配置淺析 - 簡書
總結
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!
原文鏈接:https://blog.csdn.net/u011240463/article/details/120649098