日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Maven(五)使用Nexus搭建Maven私服

發布時間:2023/12/10 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Maven(五)使用Nexus搭建Maven私服 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章裝載于:http://blog.csdn.net/jun55xiu/article/details/39497089

Nexus介紹

???? Nexus是Maven倉庫管理器,如果你使用Maven,你可以從Maven中央倉庫下載所需要的構件(artifact),但這通常不是一個好的做法,你應該在本地架設一個Maven倉庫服務器,在代理遠程倉庫的同時維護本地倉庫,以節省帶寬和時間,Nexus就可以滿足這樣的需要。此外,他還提供了強大的倉庫管理功能,構件搜索功能,它基于REST,友好的UI是一個extjs的REST客戶端,它占用較少的內存,基于簡單文件系統而非數據庫。這些優點使其日趨成為最流行的Maven倉庫管理器。

安裝Nexus過程:

1.首先確定我們的環境安裝好maven,jdk等必須的環境

2.這些都準備好之后,去下載最新版本的nexus?? ?下載地址:http://www.sonatype.org/nexus/go

?

代理Maven中央倉庫

??? 點擊左邊導航欄的Repositories,界面的主面板會顯示所有一個所有倉庫及倉庫組的列表,你會看到它們的Type字段的值有group,hosted,proxy,virtual。這里我們不關心virtual,只介紹下另外三種類型:

??? hosted,本地倉庫,通常我們會部署自己的構件到這一類型的倉庫。
??? proxy,代理倉庫,它們被用來代理遠程的公共倉庫,如maven中央倉庫。
??? group,倉庫組,用來合并多個hosted/proxy倉庫,通常我們配置maven依賴倉庫組。

添加一個代理倉庫

這里我們再舉一個例子,我們想要代理Sonatype的公共倉庫,其地址為:http://repository.sonatype.org/content/groups/public/。步驟如下,在Repositories面板的上方,點擊Add,然后選擇Proxy Repository,在下方的配置部分,我們填寫如下的信息:Repository ID - sonatype;Repository Name - Sonatype Repository;Remote Storage Location - http://repository.sonatype.org/content/groups/public/。其余的保持默認值,需要注意的是Repository Policy,我們不想代理snapshot構件,原因前面已經描述。然后點擊Save。配置頁面如下:

??

?

管理本地Maven倉庫

Nexus預定義了3個本地倉庫,分別為Releases,Snapshots,和3rd Party。這三個倉庫都有各自明確的目的。Releases用于部署我們自己的release構件,Snapshots用于部署我們自己的snapshot構件,而3rd Party用于部署第三方構件,有些構件如Oracle的JDBC驅動,我們不能從公共倉庫下載到,我們就需要將其部署到自己的倉庫中。

當然你也可以創建自己的本地倉庫,步驟和創建代理倉庫類似,點擊Repository面板上方的Add按鈕,然后選擇Hosted Repository,然后在下方的配置面板中輸入id和name,注意這里我們不再需要填寫遠程倉庫地址,Repository Type則為不可修改的hosted,而關于Repository Policy,你可以根據自己的需要選擇Release或者Snapshot

?

管理Maven倉庫組

Nexus中倉庫組的概念是Maven沒有的,在Maven看來,不管你是hosted也好,proxy也好,或者group也好,對我都是一樣的,我只管根據groupId,artifactId,version等信息向你要構件。為了方便Maven的配置,Nexus能夠將多個倉庫,hosted或者proxy合并成一個group,這樣,Maven只需要依賴于一個group,便能使用所有該group包含的倉庫的內容。

Nexus預定義了“Public Repositories”和“Public Snapshot Repositories”兩個倉庫組,前者默認合并所有預定義的Release倉庫,后者默認合并所有預定義的Snapshot倉庫。我們在本文前面的部分創建了一個名為“Sonatype Repository”的倉庫,現在將其合并到“Public Repositories”中。

點擊倉庫列表中的“Public Repositories”,然后選擇下方的"Configuration" Tab,在配置面板中,將右邊“Avaiable Repositories”中的“Sonatype Repository”拖拽到左邊的“Ordered Group Repository”中,如圖:

?

搜索構件

?

Nexus基于nexus-indexer提供構件搜索功能,要想對倉庫進行搜索,無論是hosted,proxy,或者group,你都必須確認索引文件存在。這一點對于代理倉庫尤其重要,有些遠程倉庫可能根本就沒有索引,所以你無法搜索這些代理倉庫。有些遠程倉庫的遠程索引非常大,如中央倉庫達到了70M左右,那么第一次下載索引需要花很多時間,所以要期望得到搜索結果,確保看到相應的文件。

一旦你的Nexus擁有了本地或者遠程倉庫的索引文件,你就可以享受Nexus的構件搜索功能了。不論登陸與否,你都可以使用關鍵字進行模糊搜索,比如我在左邊導航欄上部的搜索框內輸入junit,然后點擊搜索按鈕,右邊立刻會分頁顯示500多條的junit相關構件信息。如果你了解更多的信息,你也可以通過限定groupId,artifactId,version進行搜索,點擊導航欄中的“Advanced Search”,點擊右邊所有頁面左上角的下拉框,選擇“GAV Search”。筆者這里輸入junit:junit:4.4,然后回車:

圖4

?

選擇一項搜索結果,在頁面下方會顯示“Artifact Information”的面板,你可以點擊"artifact"或者"pom"下載對應文件,而該面板右邊更顯示了一個Maven依賴配置,你可以直接復制該配置到Maven POM中,這是個十分方便的特性。

此外,Nexus還支持基于classname的搜索,你只需點擊搜索頁面右上角的下拉框,選擇“Classname Search”,然后輸入類名即可,這里我不再贅述。

?

配置Maven使用Nexus

?

默認情況下,Maven依賴于中央倉庫,這是為了能讓Maven開箱即用,但僅僅這么做明顯是錯誤的,這會造成大量的時間及帶寬的浪費。既然文章的前面已經介紹了如何安裝和配置Nexus,現在我們就要配置Maven來使用本地的Nexus,以節省時間和帶寬資源。

我們可以將Repository配置到POM中,但一般來說這不是很好的做法,原因很簡單,你需要為所有的Maven項目重復該配置。因此,這里我將Repository的配置放到$user_home/.m2/settings.xml中:

<?xml version="1.0" encoding="UTF-8"?>?
<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>D:\Repositories\Maven\</localRepository>
<pluginGroups></pluginGroups>?
<proxies></proxies>?
<servers>
?  <server>
?????   <id>NSX-Release-Repository</id>
?????   <username>admin</username>
?????   <password>admin123</password>
???  </server>

? ? ? ?<server>
?????   <id>NSX-SnapShot-Repository</id>
?????   <username>admin</username>
?????   <password>admin123</password>
???  </server>
</servers>?

<profiles>?
?? ? <profile> ?
??????? <id>g11n-dev</id> ?
??????? <repositories> ?
????????? <repository> ?
??????????? <id>G11n-Repository</id> ?
??????????? <url>http://10.117.168.249:8081/nexus/content/groups/public/</url> ?
??????????? <releases> ?
????????????? <enabled>true</enabled> ?
??????????? </releases> ?
??????????? <snapshots> ?
????????????? <enabled>true</enabled> ?
??????????? </snapshots> ?
????????? </repository> ?
??????? </repositories> ?
????? </profile> ?
</profiles>?
?<activeProfiles> ?
????? <activeProfile>g11n-dev</activeProfile> ?
?? </activeProfiles>

</settings>

由于我們不能直接在settings.xml中插入<repositories>元素,這里我們編寫了一個profile,并添加了一個profile并使用<activeProfile>元素自動將這個profile激活。這里的G11n-Repository倉庫指向了剛才我們配置的Nexus中“Public Repositories”倉庫組的地址”http://10.117.168.249:8081/nexus/content/groups/public/“,也就是說,所有該倉庫組包含的倉庫都能供我們使用。此外,我們通過<releases>和<snapshots>元素激活了Maven對于倉庫所有類型構件下載的支持,當然你也可以調節該配置,比如說禁止Maven從Nexus下載snapshot構件。

部署構件至Nexus

Nexus提供了兩種方式來部署構件,你可以從UI直接上傳,也可以配置Maven部署構件。

?

?

有時候有個jar文件你無法從公共Maven倉庫找到,但是你能從其它得到這個jar文件(甚至是POM),那么你完全可以將這個文件部署到Nexus中,使其成為標準流程的一部分。步驟如下:

點擊左邊導航欄的"Repository",在右邊的倉庫列表中選擇一個倉庫,如“3rd Party”,然后會看到頁面下方有四個tab,選擇最后一個“Upload”,你會看到構件上傳界面。選擇你要上傳的構件,并指定POM,(或者手工編寫GAV等信息),最后點擊Upload,該構件就直接被部署到了Nexus的"3rd Party"倉庫中。舉例上傳oracle的驅動包:圖5

怎么使用上傳的jar包吧,很簡單的,前提是你已經建立了一個maven的項目。含有pom.xml這個文件,在這個文件中添加如下:圖6

?

然后在pom.xml中添加如下的本地倉庫地址:

。。。 <dependencies><dependency><groupId>com.oracle</groupId><artifactId>ojdbc</artifactId><version>10.1.0.2.0</version></dependency></dependencies>

?

通過Maven部署

?? 更常見的用例是:團隊在開發一個項目的各個模塊,為了讓自己開發的模塊能夠快速讓其他人使用,你會想要將snapshot版本的構件部署到Maven倉庫中,其他人只需要在POM添加一個對于你開發模塊的依賴,就能隨時拿到最新的snapshot。

以下的pom.xml配置和settings.xml能讓你通過Maven自動化部署構件:

pom.xml

<project>
...
<distributionManagement>
? <repository>
?? ? <id>NSX-Release-Repository</id>
?? ?? <name>NSX Release Repository</name>
????? <url>http://10.117.168.249:8081/nexus/content/repositories/NSX-Release-Repository</url>
? </repository>
? <snapshotRepository>
???<id>NSX-SnapShot-Repository</id>
? ? <name>NSX Snapshot Repository</name>
??? <url>http://10.117.168.249:8081/nexus/content/repositories/NSX-SnapShot-Repository</url>
? </snapshotRepository>
</distributionManagement>
...
</project>

?

settings.xml

見上

這里我們配置所有的snapshot版本構件部署到Nexus的Snapshots倉庫中, 所有的release構件部署到Nexus的Releases倉庫中。由于部署需要登陸,因為我們在settings.xml中配置對應Repository id的用戶名和密碼。

然后,在項目目錄中執行mvn deploy,你會看到maven將項目構件部署到Nexus中,瀏覽Nexus對應的倉庫,就可以看到剛才部署的構件。當其他人構建其項目時,Maven就會從Nexus尋找依賴并下載。

總結

本文介紹強大的倉庫管理器——Nexus,包括如何下載安裝Nexus,配置Nexus代理中央倉庫,管理Nexus的代理倉庫,本地倉庫,以及倉庫組。并幫助你了解如何通過Nexus搜索構件。最后,如何在Maven中配置Nexus倉庫,以及如何部署構件到Nexus倉庫中。這些都是Nexus中最基本也是最常用的功能。隨著使用的深入,你會發現Nexus還有很多其它的特性,如用戶管理,角色權限管理等等。

?

轉載于:https://www.cnblogs.com/luffigo/p/5224667.html

總結

以上是生活随笔為你收集整理的Maven(五)使用Nexus搭建Maven私服的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。