當你專案有了需求,就會去找合適的工具不要重複造輪子,此時我們常會google看看有沒有人寫過,找到了就到Maven Repository搜尋看看,把Maven座標貼在你的POM檔裡面,用IDE Reload你的Maven Project,然後你的套件就下載完成了,很神奇的是你都沒設定就有套件可以用了,這是因為default套件下載路徑被設定在Super Pom中,如果我們想要修改它則須設定在setting.xml中,讓我們娓娓道來吧
Repository可以分為以下幾個類型
指的是本機存放jar套件的repository,預設路徑會放置在user目錄下.m2/repostory/
因為Maven執行需要一個默認可以使用中央倉庫,我們可以在先前介紹的Super POM可以看到設定(maven-model-builder-3.0.jar/org/apache/maven/model/pom-4.0.0.xml)
大部份的公司會自建自己私有的Repository,通常會這樣做的原因在於
常見的幾個公開Repository如下
通常我們不會把Local Repository設定在user目錄下的.m2/repostory/
,習慣上不會放在與作業系統安裝的C槽下,所以我們會透過設置setting.xml修改Local Repository的路徑,你可以設置在下面其中一個地方,其中User的預設是需要自己建立的
maven很貼心先幫你註解起來,只需要解開註解設定成自己要的路徑即可
<localRepository>H:\Java\maven_repository</localRepository>
我們透過mirro這個鏡像標籤進行修改,mirrorOf對應的就是針對要反射的repository id進行反射,也就是說當要求去central這個id的repository撈取套就都會被導到alibaba的這個位置
<mirrors>
<mirror>
<id>alibaba</id>
<name>alibaba Repository</name>
<url>https://maven.aliyun.com/nexus/content/groups/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
然後我們在我們的測試專案執行command
mvn package
就會發現它從alibaba下載了
筆者曾經遇到Vaddin的一個套件無法從maven central下載,操作結果如下
在Local Repository看不到對應的Jar
此時就需要去Vaddin官網去找該套件該如何下載
將repository設置在你專案的pom.xml中
<repositories>
<repository>
<id>Vaadin Directory</id>
<url>https://maven.vaadin.com/vaadin-addons</url>
</repository>
</repositories>
執行完command就會發現下載成功了
我們可以在maven conf資料夾下的setting.xml中設定repository並於server標籤中設定server資訊,如果還需要對密碼加密可以參考官網設定
<mirrors>
<mirror>
<id>company-repo</id>
<mirrorOf>*</mirrorOf> <!-- 攔截所有 repository,包括 central -->
<url>https://maven.mycompany.com/repository/maven-public/</url>
</mirror>
</mirrors>
<servers>
<server>
<id>company-repo</id> <!-- 這個 id 之後要跟 repository 對應 -->
<username>你的帳號</username>
<password>你的密碼</password>
</server>
</servers>
筆者未遇到此問題這個部分可以參考官網的設定
trust.jks
中,再將它設定到環境變數中MAVEN_OPTS指定憑證路徑今日大致介紹了Local Repository與Remote Repository並介紹在上班可能在使用Maven常見的問題,如果還想知道更詳盡setting.xml可以如何設定可以參考官網