Maven私服-nexus使用簡介

Nexus部署 web

Nexus介紹

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

 下載和安裝

http://nexus.sonatype.org/downloads/ 下載最新版本的Nexus,筆者使用的是2.4版本。 apache

Nexus提供了兩種安裝方式,一種是內嵌Jettybundle,只要你有JRE就能直接運行。第二種方式是WAR,你只須簡單的將其發佈到web容器中便可使用。 windows

該文檔中使用的war安裝方式,可是此處兩種安裝方式都介紹。 瀏覽器

 Bundle方式安裝

解壓nexus-2.4-bundle.zip 至任意目錄,如D:\dev_tools ,而後打開CMDcd至目錄\nexus-2.4\bin\jsw\windows-x86-32 ,運行Nexus.bat 。你會看到Nexus的啓動日誌,當你看到「Started SelectChannelConnector@0.0.0.0:8081」以後,說明Nexus啓動成功了,而後打開瀏覽器,訪問 http://127.0.0.1:8081/nexus,你會看到以下的頁面: tomcat

要中止NexusCtrl+C便可,此外InstallNexus.bat能夠用來將Nexus安裝成一個windows服務,其他的腳本則對應了啓動,中止,暫停,恢復,卸載Nexus服務。 服務器

 WAR方式安裝

你須要有一個能運行的web容器,這裏以Tomcat爲例首先咱們將下載的nexus-2.4.war 重命名爲nexus.war,而後複製到\apache-tomcat-6.0.18\webapps\nexus.war ,到\apache-tomcat-6.0.18\bin\ 目錄,運行startup.bat 。一切OK,如今能夠打開瀏覽器訪問http://127.0.0.1:8080/nexus,你會獲得和上圖同樣的界面。 app

配置Maven使用Nexus

默認狀況下,Maven依賴於中央倉庫,這是爲了能讓Maven開箱即用,但僅僅這麼作明顯是錯誤的,這會形成大量的時間及帶寬的浪費。既然文章的前面已經介紹瞭如何安裝和配置Nexus,如今咱們就要配置Maven來使用本地的Nexus,以節省時間和帶寬資源。 webapp

咱們能夠將Repository配置到POM中,但通常來講這不是很好的作法,緣由很簡單,你須要爲全部的Maven項目重複該配置。所以,這裏我將Repository的配置放到$user_home/.m2/settings.xml中: maven

    <settings> 

    ...  

    <profiles> 

      <profile> 

        <id>local-nexus</id> 

        <repositories> 

          <repository> 

            <id>local-nexus</id> 

            <url>Nexus groups 地址,如:

              http://localhost:8090/nexus-2.4/content/groups/public/  

            </url> 

            <releases> 

              <enabled>true</enabled> 

            </releases> 

            <snapshots> 

              <enabled>true</enabled> 

            </snapshots> 

          </repository> 

        </repositories> 

      </profile> 

</profiles> 

*********************

    <activeProfiles> 

      <activeProfile>local-nexus</activeProfile> 

    </activeProfiles> 

    ...  

    </settings>

 

 

因爲咱們不能直接在settings.xml中插入<repositories>元素,這裏咱們編寫了一個profile,並添加了一 個profile並使用<activeProfile>元素自動將這個profile激活。這裏的local-nexus倉庫指向了剛纔咱們 配置的Nexus「Public Repositories」倉庫組,也就是說,全部該倉庫組包含的倉庫都能供咱們使用。此外,咱們經過<releases> <snapshots>元素激活了Maven對於倉庫全部類型構件下載的支持,固然你也能夠調節該配置,好比說禁止MavenNexus 下載snapshot構件。

使用該配置,Maven就會從你的Nexus服務器下載構件了,速度和從Central下載可不是一個數量級的。

 

修改nexus-work目錄

Nexus的工做目錄默認爲nexus-work=${user.home}/sonatype-work/nexus,在該目錄下面存儲有nexus的配置信息和下載的庫文件,所佔用的空間比較大,你們能夠按照需求修改。

1. 若是下載的是WAR包版,請修改:nexus-*\WEB-INF\plexus.properties這個目錄中的內容。使用WinRAR或者是其餘的解壓軟件打開nexus-*.war,nexus-work修改成本身的目錄以後保存。

2. 若是下載的是內置Jetty版,請修改:(該方式未經驗證)

Ø  start-nexus方式啓動

%Nexus_HOME%/conf/nexus.properties

nexus-work=${bundleBasedir}/../../sonatype-work/nexus

Ø  console-nexus方式啓動

直接添加環境變量PLEXUS_NEXUS_WORK

 

建議:若是不建議有一個dos窗口的話,添加環境變量後,每次使用console-nexus的方式啓動,好處是每次升級Nexus後不用修改配置文件。

Nexus配置鏡像

在上述配置方式中,Maven首先查找Nexus中的jar包,若是找不到則去中央倉庫下載。在此,咱們經過配置鏡像的方式阻止Maven下載中央工廠中的jar包,即若是Nexus中不存在jar包,則用戶就沒法得到該包。

具體配置爲:在$user_home/.m2/settings.xml中設置mirror便可。

 <mirrors>

    <mirror>

      <id>nexusMirror</id>

         <!--此處使用*匹配全部的倉庫,此爲推薦的配置方式-->

      <mirrorOf>*</mirrorOf>

      <name>本地鏡像</name>

      <url>http://localhost:8090/nexus-2.4/content/groups/public/</url>

    </mirror>

    

  </mirrors>

 

如此,只有Nexus才能夠訪問中央倉庫。此時$user_home/.m2/settings.xmlprofile中配置的repository已經無效。

 

部署構件至Nexus

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

 

經過Nexus UI部署

有時候有個jar文件你沒法從公共Maven倉庫找到,可是你能從其它獲得這個jar文件(甚至是POM),那麼你徹底能夠將這個文件部署到Nexus中,使其成爲標準流程的一部分。步驟以下:

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


經過Maven部署

更常見的用例是:團隊在開發一個項目的各個模塊,爲了讓本身開發的模塊可以快速讓其餘人使用,你會想要將snapshot版本的構件部署到Maven倉庫中,其餘人只須要在POM添加一個對於你開發模塊的依賴,就能隨時拿到最新的snapshot

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

Pom.xml

 

    <project> 

    ...  

    <distributionManagement> 

      <repository> 

        <id>nexus-releases</id> 

          <name>Nexus Release Repository</name> 

          <url>Nexus release 地址</url> 

      </repository> 

      <snapshotRepository> 

        <id>nexus-snapshots</id> 

        <name>Nexus Snapshot Repository</name> 

        <url>Nexus snapshots地址</url> 

      </snapshotRepository> 

    </distributionManagement> 

    ...  

    </project>

 

Settings.xml

<settings>

...

<servers>

  <server>

    <id>nexus-releases</id>

    <username>admin</username> <!--此處的用戶名、密碼爲管理員分配的用戶名和密碼-->

    <password>admin123</password>

  </server>

  <server>

    <id>nexus-snapshots</id>

    <username>admin</username>

    <password>admin123</password>

  </server> 

</servers>

...

</settings>

這裏咱們配置全部的snapshot版本構件部署到NexusSnapshots倉庫中, 全部的release構件部署到NexusReleases倉庫中。因爲部署須要登錄,由於咱們在settings.xml中配置對應 Repository id的用戶名和密碼。

而後,在項目目錄中執行deploy ,你會看到maven將項目構件部署到Nexus中,瀏覽Nexus對應的倉庫,就能夠看到剛纔部署的構件。當其餘人構建其項目時,Maven就會從Nexus尋找依賴並下載。

 

 

搜索構件

在浩大的Maven倉庫中一下下點擊連接,瀏覽路徑以尋找感興趣的構件是一件很鬱悶的事情。Nexus基於nexus-indexer提供構件搜索功能,要想對倉庫進行搜索,不管是hostedproxy,或者group,你都必須確認索引文件存在。這一點對於代理倉庫尤爲重要,有些遠程倉庫可能根本就沒有索引,因此你沒法搜索這些代理倉庫。有些遠程倉庫的遠程索引很是大,如中央倉庫達到了70M左右,那麼第一次下載索引須要花不少時間,因此要指望獲得搜索結果,確保看到以下的文件:

一旦你的Nexus擁有了本地或者遠程倉庫的索引文件,你就能夠享受Nexus的構件搜索功能了。不論登錄與否,你均可以使用關鍵字進行模糊搜索,好比我在左邊導航欄上部的搜索框內輸入junit,而後點擊搜索按鈕,右邊馬上會分頁顯示500多條的junit相關構件信息。若是你瞭解更多的信息,你也能夠經過限定groupIdartifactIdversion進行搜索,點擊導航欄中的「Advanced Search」,點擊右邊全部頁面左上角的下拉框,選擇「GAV Search」。筆者這裏輸入junit:junit:4.4,而後回車:


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

此外,值得一提的是,Nexus還支持基於classname的搜索,你只需點擊搜索頁面右上角的下拉框,選擇「Classname Search」,而後輸入類名便可,這裏我再也不贅述。

相關文章
相關標籤/搜索