沒有配置nexus之前,如果本地倉庫沒有,那麼會去中央倉庫下載,通常在企業中會在局域網內部署一臺私服服務器,有了私服之後,本地項目會首先去本地倉庫找jar包,如果沒有找到則連接私服從私服下載jar包,如果私服沒有jar包私服同時作爲代理服務器從中央倉庫下載jar包,這樣做的好處是一方面由私服對公司項目的依賴jar包統一管理,一方面提高下載速度,項目連接私服下載jar包的速度要比項目連接中央倉庫下載jar包的速度快得多。
在本講中,我將會演示如何從私服上下載jar包(是將crm-dao項目打包成的jar包),並進行測試。
管理倉庫組
nexus中包括很多倉庫,hosted中存放的是企業自己發佈的jar包及第三方公司的jar包,proxy中存放的是中央倉庫的jar包。爲了方便從私服下載jar包,可以將多個倉庫組成一個倉庫組,每個工程需要連接私服的倉庫組下載jar包。
你有沒有想過如何來配置倉庫組啊?首先啓動nexus服務,然後在瀏覽器地址欄中輸入http://localhost:8081/nexus/
這樣的url地址進行訪問,接着你會看到在右上角有個Log In
的超鏈接,點擊它並使用nexus內置賬戶(用戶名是admin,密碼是admin123)進行登錄,登錄成功之後,你便會看到如下圖所示的效果。
點擊頁面左側的Repositories
超鏈接就能看到倉庫組了,接着你就可以配置倉庫組了。
上圖中倉庫組包括了本地倉庫、代理倉庫等。
在settings.xml文件中配置倉庫
在客戶端的settings.xml文件中配置私服的倉庫,也稱之爲配置模板。由於settings.xml文件中沒有repositories的配置標籤,所以需要使用profile標籤來定義倉庫。
<profile>
<!-- profile的id -->
<id>dev</id>
<repositories>
<repository>
<!-- 倉庫id,repositories標籤內可以配置多個倉庫,但要保證id不重複 -->
<id>nexus</id>
<!-- 倉庫地址,即nexus倉庫組的地址 -->
<url>http://localhost:8081/nexus/content/groups/public/</url>
<!-- 是否下載releases構件 -->
<releases>
<enabled>true</enabled>
</releases>
<!-- 是否下載snapshots構件 -->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件倉庫,maven的運行依賴插件也需要從私服下載 -->
<pluginRepository>
<!-- 插件倉庫的id不允許重複,如果重複後邊的配置會覆蓋前邊的配置 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
一定要注意,以上配置要添加在settings.xml文件中的profiles標籤內。
使用profile標籤定義倉庫之後,需要激活纔可生效,也即需要激活模板。所以,還需要在settings.xml文件中添加如下配置。
settings.xml文件配置好了之後,我們可以通過eclipse來查看一下有效pom(有效pom是maven軟件最終使用的pom內容,程序員不能直接編輯有效pom),例如查看一下crm-dao項目的有效pom。
可以看到crm-dao項目的有效pom中有如下內容。
從以上內容中可得知有兩個倉庫地址,maven會先從前邊的倉庫找,如果找不到jar包再從下邊的倉庫找,從而就實現了從私服下載jar包。
測試從私服下載jar包
測試環境:局域網環境或本地網絡
首先,將本地倉庫中的由crm-dao項目打包成的jar包刪除掉。
此時,發現crm-service項目並沒有報錯,這是爲什麼呢?因爲它現在引用的是crm-dao這麼一個項目。
如果說現在我們在eclipse中把crm-dao項目關閉掉,並且切換到maven控制檯,你便能看到maven控制檯中輸出瞭如下信息。
項目先從本地倉庫找crm-dao,找不到再從私服找,由於之前執行deploy命令已經將crm-dao部署了到私服中,所以可以成功從私服上下載crm-dao並在本地倉庫中保存一份。
從私服下載jar包後,項目有可能會報錯,不用擔心,更新一下項目即可。
測試環境:互聯網環境
在項目的pom.xml文件中添加一個依賴,此依賴在本地倉庫和私服中都不存在,此時,maven會先從本地倉庫找,本地倉庫沒有再從私服找,私服沒有再去中央倉庫下載,jar包下載成功後,在私服、本地倉庫中分別存儲一份。