Nexus3.x安裝及配置


引言

搭建maven私服主要是為了方便在一個團隊中使用maven中央倉庫沒有的jar包,這些非中央倉庫的jar包可能是自己團隊開發的公共依賴jar包,可能是第三方私有的認證相關jar包,特殊的還有oracle的驅動jar包,下面是使用Nexus搭建maven私服及私服使用

Nexus3.x安裝及配置

前置條件要求存在jdk1.8的環境

下載

這里之所以要特地提下下載是因為這個東西是真難下,我的電腦本身一直沒有安裝過專門的下載工具(度盤不算),一般下載都是走網盤或者瀏覽器直接下載,這次無論度盤的離線下載還是瀏覽器下載都非常慢甚至下載失敗(100M光纖),在服務器上使用wget同樣很慢,最后安裝了迅雷使用迅雷下載后速度快很多,看來下載確實需要專業的下載工具,下載完成后上傳到服務器上即可,當然也可以直接在服務器上使用wget下載,如果不嫌棄下載的慢的話:

官方下載頁:

https://www.sonatype.com/download-oss-sonatype

實際資源地址

wget https://sonatype-download.global.ssl.fastly.net/repository/repositoryManager/3/nexus-3.10.0-04-unix.tar.gz

安裝及配置

#解壓
 tar -zvxf nexus-3.10.0-04-unix.tar.gz
#解壓的文件夾移到nexus(自動創建)
mv nexus-3.10.0-04/ /usr/local/nexus

#防火牆開啟8081端口,該端口是nexus的默認端口(在/usr/local/nexus/etc/nexus-default.properties文件中)
vi  /etc/sysconfig/iptables
# 在打開的文件中加入如下內容
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8081 -j ACCEPT

#啟動 ps 我安裝時第一次啟動使用./nexus start 訪問不到web頁面,使用run命令可以,之后使用start也可以了
./nexus run &

#啟動成功會有如下信息
WARNING: ************************************************************
WARNING: Detected execution as "root" user.  This is NOT recommended!
WARNING: ************************************************************
Starting nexus

上面啟動成功后會警告不要使用root用戶啟動,這里可以新建一個用戶,也可以指定root用戶啟動,使他不出現警告,下面配置指定root用戶啟動

#該文件在bin目錄下和啟動程序nexus同級
vi nexus.rc
run_as_user=root

手動更新索引(可選)

我這里沒有下載索引,以前配置過nenus2.x時下載過全部索引,很大很慢,下載了一晚上,不下載索引並不影響使用,這里會同步當前項目使用的依賴到私服的索引中,有新的依賴從私服中獲取也會更新對應的索引,下面介紹一種離線安裝的方式

  1. 前往maven中央倉庫下載 indexer-cli-5.1.1.jar 解壓工具包

  2. 下載離線索引文件

    nexus-maven-repository-index.gz
    nexus-maven-repository-index.properties
    
  3. 將3個文件放在同一目錄下解壓

    java -jar indexer-cli-5.1.1.jar -u nexus-maven-repository-index.gz -d indexer
    
  4. 拷貝索引
    nexus2.x拷貝到{nexus-home}/sonatype-work/nexus/indexer/central-ctx
    nexus3.x拷貝到/sonatype-work/nexus3/blobs/default,3.x我沒嘗試過參考這篇博客

web界面

  1. 訪問web界面,使用默認管理賬號admin/admin123登錄
    http://192.168.16.30:8081/

  2. 倉庫瀏覽在左側菜單欄Browse,這里有多種倉庫,相比於nexus2.x精簡了很多倉庫

    nexus倉庫類型  
    Group:這是一個倉庫聚合的概念,用戶倉庫地址選擇Group的地址,即可訪問Group中配置的
    所有倉庫資源,訪問順序取決於配置順序3.x默認Releases,Snapshots,Central,可在web頁面配置
    在web界面點開  
    
    Hosted:私有倉庫,專門用來存儲我們自己生成的jar文件  
       3rd party:未發布到公網的第三方jar (3.x去除了)
       Snapshots:本地項目的快照倉庫  
       Releases: 本地項目發布的正式版本  
    
    Proxy:公網上發布的jar 例如:spring
      Central:中央倉庫
      Apache Snapshots:Apache專用快照倉庫(3.x去除了)
    
  3. 配置Releases版本可重復上傳

    點擊圖片畫框部分配置Releases: Deployment pollcy --> Allow redeploy

    mark

    image

使用nenus本地maven配置

全局配置下載依賴(即項目pom無需配置)

在maven的setting.xml文件中配置私服配置,這種方式配置后所有本地使用該配置的maven項目的pom文件都無需配置私服下載相關配置

<profiles>
  <profile>
     <id>mycof</id>
        <repositories>
        <!-- 私有庫地址-->
          <repository>
          <id>nexus</id>
          <url>http://192.168.16.30:8081/repository/maven-public/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>      
      <pluginRepositories>
        <!--插件庫地址-->
        <pluginRepository>
          <id>nexus</id>
          <url>http://192.168.16.30:8081/repository/maven-public/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
           </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>

激活使用上面的配置

<!--激活profile-->
<activeProfiles>
  <activeProfile>mycof</activeProfile>
</activeProfiles>

指定鏡像代理為我們的私服

<mirror>
  <id>nexus-myself</id>
  <!--*指的是訪問任何倉庫都使用我們的私服-->
  <mirrorOf>*</mirrorOf>
  <name>Nexus myself</name>
  <url>http://192.168.16.30:8081/repository/maven-public/</url>
</mirror>

單獨項目下載依賴(即項目pom文件中配置)

這種配置是修改單個項目的pom文件,無需修改maven的setting配置(盡管如此說,但是如果setting.xml中配置了mirror標簽,並且mirrorOf為*或者私服地址,還是會被攔截,被代理指向代理地址)

<repositories>
  <repository>
    <id>nexus</id>
    <url>http://192.168.16.30:8081/repository/maven-public/</url>
    <releases>
      <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>

建議使用全局的setting配置,一個項目組共用一個maven的setting配置,項目中就無需配置下載相關的私服倉庫配置

使用私服后倉庫訪問順序

mark

上傳jar包配置

對於中央倉庫沒有的jar包,需要我們自己將jar包發布到私服中去,其中jar包主要分為兩類,一類是本地自己開發供給項目組其余同事使用,這種直接配置項目的pom文件和maven的setting文件,之后deploy發布即可發布到,另一類是第三方jar包,可以直接使用web頁面上傳並設置對應GAV即可

本地maaven開發的項目上傳配置
  1. maven的setting文件配置
    這里要配置配置上傳用戶及倉庫信息,我這里直接使用了admin用戶,在nenus2.x中還內置了一個deployment/deployment123用戶,在3.x該用戶被移除了,這里可以自己配置角色和用戶,我就直接使用admin用戶了

    <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>
    
  2. 項目中的pom文件配置

    <distributionManagement>
    		<repository>
    			<id>nexus-releases</id>
    			<name>Nexus Release Repository</name>
    			<url>http://192.168.16.30:8081/repository/maven-releases/</url>
    		</repository>
    		<snapshotRepository>
    			<id>nexus-snapshots</id>
    			<name>Nexus Snapshot Repository</name>
    			<url>http://192.168.16.30:8081/repository/maven-snapshots/</url>
    		</snapshotRepository>
    	</distributionManagement>
    
  3. 執行maven的deploy命令

    這是myeclipse中上傳本地項目jar到私服,IDEA中更為簡單直接點擊maven周期中的deploy即可

    mark

    出現uploading信息並且沒報錯說明上傳成功

    mark

    到對應倉庫查看

    mark

注意:

  1. 這里只有Snapshot的倉庫上傳成功,Release倉庫並沒有上傳成功,這是因為版本號名稱結尾有SNAPSHOT,默認以這個結尾是不會上傳到Release倉庫去的,去除就會上傳到Release倉庫且不會上傳到快照倉庫

  2. Release倉庫默認不支持重復發布,可配置

  3. 注意setting中server標簽下的id要和pom文件中倉庫配置的id相同,即指定上傳到哪個倉庫

第三方jar包上傳

對於第三方jar包的上傳采用nenus提供的web界面上傳,上傳成功后需要使用該jar包的話,依賴中填寫自定義的GAV即可

mark


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM