maven搭建nexus私服過程

通常,使用maven過程中,想要下載依賴的jar包,團隊中的每一個人都需要從maven提供的中央倉庫中下載,安裝到本地的緩存中(本地磁盤),但是使用了nexus後,那些依賴(以及依賴的依賴)只需要從遠程倉庫中下載一次,這樣節省的時間將會是Maven檢查依賴新版本以及下載依賴的時間。另外,利用nexus私服,通過發佈內部項目構建到私服下,團隊之間可以共享內部項目構建的快照版本和發佈版本的機制。

以下總結團隊開發過程中搭建nexus私服的過程:

1、安裝Nexus。

1.1、訪問http://nexus.sonatype.org/downloads/。點擊下載鏈接,下載適用於你平臺的存檔文件。Nexus目前有ZIP和Gzip歸檔的TAR兩種可用形式。(安裝方式自己網上學習去。。。)

1.2、運行Nexus。

訪問Nexus:啓動nexus後,它的默認地址是localhost:8081。Nexus在一個名爲Jetty的servlet容器中運行,它使用一個名爲Tanuki Java Service wrapper的本地服務包裹器啓動。要使用Nexus,啓動一個web瀏覽器然後輸入URL:http://localhost:8081/nexus。點擊web頁面右上角的“Log In”鏈接,默認的NEXUS用戶名和密碼是"admin" 和 "admin123"。

開啓遠程索引下載:Nexus帶有三個重要的代理倉庫,有中央Maven倉庫,Apache快照倉庫,和Codehaus快照倉庫。它們中的每一個倉庫都包含了數千(或數萬)的構件,下載
每個倉庫的所有內容是不切實際的。處於這個原因,大部分倉庫維護了一個編錄了整個內容的Lucene索引,以提供快速和有效的搜索。Nexus使用這些遠程索引搜索構件,但是默認設置我們關閉了索引下載。要下載遠程索引,
1.2.1. 點擊Administration菜單下面的Repositories,更改三個代理倉庫的Download Remote Indexes爲true。
1.2.2. 在每個代理倉庫上右擊然後選擇Re-index。這會觸發Nexus下載遠程的索引文件

Nexus下載整個索引可能需要好幾分鐘,但是一旦你下載好之後,你就能夠搜索aven倉庫的所有內容了。

2、配置Maven使用Nexus
要使用Nexus,你需要配置Maven去檢查Nexus而非公共的倉庫。爲此,你需要編輯在你的~/.m2/settings.xml文件中的mirror配置。

2.1、使用nexus中央代理倉庫

要配置Maven去查閱Nexus而非中央Maven倉庫,在你的~/.m2/settings.xml文件中添加爲Nexus配置Maven Settings (~/.m2/settings.xml)”的mirror配置。

<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">

 <mirrors>
    <mirror>
      <!--This sends everything else to /public -->
      <id>nexus</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://central</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
 
  <servers>
  <server>  
    <id>releases</id>  
    <username>admin</username>  
    <password>admin123</password>  
  </server>  
 <server>  
  <id>snapshots</id>  
  <username>admin</username>  
  <password>admin123</password>  
  </server>  
  <server>   
<id>thirdparty</id>   
<username>admin</username>
<password>admin123</password>   
</server>
  </servers>

</settings>


在你將Nexus配置成所有倉庫的鏡像之後,Maven現在會從本地的Nexus安裝查閱,而非去外面查閱中央Maven倉庫。如果對Nexus有一個構件請求,本地的Nexus安裝會提供這個構件。如果Nexus沒有這個構件,Nexus會從遠程倉庫獲取這個構件,然後添加至遠程倉庫的本地鏡像。要測試Nexus如何工作的,從你的本地Maven倉庫中刪除一個目錄,然後運行Maven構建。如果你刪除了~/.m2/repository/org,你會刪除一大堆的依賴(包括Maven 插件)。下次你運行Maven的時候,你應該看到如下的信息:
$ mvn clean install
...
Downloading: http://localhost:8081/nexus/content/groups/public/...
3K downloaded


3、爲缺少的依賴添加倉庫

如果你已經將你的Maven settings.xml配置成使用Nexus作爲所有公共倉庫和所有公共快照倉庫的鏡像,你可能會遇到一些項目不能夠從你的本地Nexus獲取需要的構件。這很常見,因爲你經常會構建一些在pom.xml中自定義一組repositories和snapshotRepositories的項目。如果你正在構建開源項目,或者往你的配置中添加了自定義的第三方Maven倉庫,那麼這種情況就會發生。

對於一些沒有被加入到中央Maven倉庫的組件,我們可以先用SVN簽出網上的組件,假設安裝了Subversion並且你正在命令行運行Subversion,執行下面的命令:

$ svn co http://svn.apache.org/repos/asf/incubator/shindig/trunk shindig
... Subversion will checkout the trunk of Apache Shindig ...
$ cd shindig
$ mvn install

4、部署構建至nexus

不同的組織有不同的理由將構件部署至內部倉庫。在有數百(或數千)開發人員的大型組織內,一個內部Maven倉庫可以是不同部門之間共享發佈版和開發快照版本的有效手
段。大部分使用Maven的組織最終都會開始將發佈版本和構件部署到一個共享的內部倉庫。使用Nexus,可以很容易的部署構件至一個宿主倉庫。要部署構件至Nexus,在distributionManagement中提供倉庫URL,然後運行mvndeploy。Maven會通過一個簡單的HTTP PUT將項目POM和構件推入至你的Nexus安裝。最初版本的Nexus沒有爲宿主倉庫提供任何的安全措施。如果你爲宿主倉庫開啓了部署功能,任何人可以連接並部署構件至這個倉庫。如果你的Nexus安裝能夠從公共Internet訪問,你絕對會想要將這些倉庫的部署功能關閉,或者將你的Nexus安裝放到一個如Apache HTTPD的web服務器背後。

4.1、部署發佈版

要部署一個發佈版構件至Nexus,你需要配置你項目POM中distributionManagement部分的repository。在pom.xml添加以下配置:

<project>

...

  <distributionManagement>
        <repository>
            <id>releases</id>
            <name>Internal Releases</name>
            <url>http://192.168.2.161:8081/nexus/content/repositories/releases</url>
        </repository>
    </distributionManagement>

....

</project>

通過執行mvn deploy命令部署構件。$ mvn deploy

4.2、部署快照版

類似發佈版,添加配置:

<project>
...
<distributionManagement>
...
<snapshotRepository>
<id>Snapshots</id>
<name>Internal Snapshots</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
...
</distributionManagement>

...
</project>

4.3、部署第三方構件

你的Maven項目可以依賴於一個構件,這個構件不能從中央Maven倉庫或任何其它公開Maven倉庫找到。有很多原因可能導致這種情形發生:這個構件可能是私有數據庫的
JDBC驅動如Oracle,或者你依賴於另一個JAR,它既不開源也無法免費獲得。在這樣的情況下,你就需要手動拿來這些構件然後發佈到你自己的倉庫中。Nexus提供宿主
的"third-party"倉庫,就是爲了這個目的。

mvn deploy:deploy-file -DgroupId=com.oracle -DartifactId=ojdbc14  -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=C:\Users\Administrator\Desktop\ojdbc14.jar  -Durl=http://localhost:8081/nexus/content/repositories/thirdparty  -DrepositoryId=thirdparty

執行該命令,需要nexus的認證,不然會報異常:Return code is: 401, ReasonPhrase: Unauthorized.

往setting.xml文件中添加nexus的用戶名和密碼:

<server>  
    <id>releases</id>  
    <username>admin</username>  
    <password>admin123</password>  
  </server>  
 <server>  
  <id>snapshots</id>  
  <username>admin</username>  
  <password>admin123</password>  
  </server>  
  <server>   
<id>thirdparty</id>   
<username>admin</username>
<password>admin123</password>   

</server>



。。。。。。。。。待完善。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章