自己動(dòng)手搭建Nexus

為什么要搭建私服

搭建Nexus私服的主要目的是為了解決工作上組件之間的jar包依賴管理。特別是基礎(chǔ)架構(gòu)部門(mén)的jar包要共享出來(lái),就需要把jar包deploy發(fā)布到nexus私服上。

第一步: 安裝Nexus

準(zhǔn)備工作

  • 找一臺(tái)linux系統(tǒng)的虛擬機(jī)服務(wù)器,系統(tǒng)centos 7
  • jdk 1.8
  • nexus-3.9.0-01-unix.tar.gz
  • 客戶端安裝了maven

下載與安裝

  • 下載安裝包:https://pan.baidu.com/s/1LjwzEax71H6emkUL3uZRcw,可以到官網(wǎng)上去下載最新版本的。
  • 上傳并解壓安裝包
    xshell工具將安裝包上傳服務(wù)器:/usr/local/nexus目錄下
    執(zhí)行解壓:
tar -xzvf nexus-3.9.0-01-unix.tar.gz
  • 修改配置
    可以在nexus-default.properties文件中(位于/nexus-3.9.0-01/etc/目錄下)修改WEB訪問(wèn)端口等信息,默認(rèn)為8081端口;
    防火墻放行8081端口;
  • 啟動(dòng)
    執(zhí)行: cd nexus-3.9.0-01/bin,進(jìn)入到bin目錄,執(zhí)行:
./nexus run 

檢驗(yàn)是否安裝成功

打開(kāi)瀏覽器,訪問(wèn):http://ip地址:8081/
默認(rèn)用戶名 admin 默認(rèn)密碼 admin123

image.png

到此,Nexus 安裝完成。

第二步: 配置Nexus

私服工作原理:

配置Nexus之前,需要先了解一下私服的工作原理,如下圖:


image

找依賴包的流程: 首先在本地倉(cāng)庫(kù)中找,如果沒(méi)命中,那么就找遠(yuǎn)程私服;遠(yuǎn)程私服的查找規(guī)則同樣是先找host屬性的私有庫(kù),然后再去找proxy屬性的遠(yuǎn)程倉(cāng)庫(kù);可以配置多個(gè)proxy;

Nexus倉(cāng)庫(kù)類型介紹

默認(rèn)安裝有以下這幾個(gè)倉(cāng)庫(kù),在控制臺(tái)也可以修改遠(yuǎn)程倉(cāng)庫(kù)的地址,第三方倉(cāng)庫(kù)等。

  • hosted(宿主倉(cāng)庫(kù)庫(kù)) :存放本公司開(kāi)發(fā)的jar包(正式版本、測(cè)試版本)
  • proxy(代理倉(cāng)庫(kù)):代理中央倉(cāng)庫(kù)、Apache下測(cè)試版本的jar包
  • group(組倉(cāng)庫(kù)):使用時(shí)連接組倉(cāng)庫(kù),包含Hosted(宿主倉(cāng)庫(kù))和Proxy(代理倉(cāng)庫(kù))

分組倉(cāng)庫(kù)的配置

如上圖所示,maven-public就我創(chuàng)建的組倉(cāng)庫(kù)。以及還創(chuàng)建了3個(gè)代理倉(cāng)庫(kù),如下。

1、jCenter阿里云倉(cāng)庫(kù):http://maven.aliyun.com/nexus/content/groups/public/

2、maven中央倉(cāng)庫(kù):https://repo1.maven.org/maven2/

最后建立組倉(cāng)庫(kù)maven-public,如下。

組倉(cāng)庫(kù)中包含了jcenter、maven-central、本地maven-releases,本地maven-snapshots。

** 至此,Nexus基本就這么配置好了,主要在Group組中配置一個(gè)代理私服。**

第三步:配置下載依賴 setting.xml

添加maven倉(cāng)庫(kù)鏡像

創(chuàng)建好組倉(cāng)庫(kù)之后,修改setting.xml文件,添加maven倉(cāng)庫(kù)鏡像,如下:

<mirror>
  <id>nexus-myself</id>
  <!--*指的是訪問(wèn)任何倉(cāng)庫(kù)都使用我們的私服-->
  <mirrorOf>*</mirrorOf>
  <name>Nexus myself</name>
  <url>http://192.168.124.29:8081/repository/maven-public/</url>
</mirror>

全局配置下載依賴(即項(xiàng)目pom無(wú)需配置)

在maven的setting.xml文件中配置私服配置,這種方式配置后所有本地使用該配置的maven項(xiàng)目的pom文件都無(wú)需配置私服下載相關(guān)配置。

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

激活使用上面的配置

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

單獨(dú)項(xiàng)目下載依賴(即項(xiàng)目pom文件中配置)

這種配置是修改單個(gè)項(xiàng)目的pom文件,無(wú)需修改maven的setting配置

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

建議使用全局的setting配置,一個(gè)項(xiàng)目組共用一個(gè)maven的setting配置,項(xiàng)目中就無(wú)需配置下載相關(guān)的私服倉(cāng)庫(kù)配置

第四步:上傳jar包配置

對(duì)于中央倉(cāng)庫(kù)沒(méi)有的jar包,需要我們自己將jar包發(fā)布到私服中去,其中jar包主要分為兩類,
一類是本地自己開(kāi)發(fā)供給項(xiàng)目組其余同事使用,這種直接配置項(xiàng)目的pom文件和maven的setting文件,之后deploy發(fā)布即可發(fā)布到;
另一類是第三方j(luò)ar包,可以直接使用web頁(yè)面上傳并設(shè)置對(duì)應(yīng)GAV即可;

本地maven開(kāi)發(fā)的項(xiàng)目上傳配置

1.maven的setting文件配置
這里要配置配置上傳用戶及倉(cāng)庫(kù)信息,我這里直接使用了admin用戶,在nenus2.x中還內(nèi)置了一個(gè)deployment/deployment123用戶,在3.x該用戶被移除了,這里可以自己配置角色和用戶,我就直接使用admin用戶了

<servers>
    <server>  
        <id>maven-releases</id>  
        <username>admin</username>  
        <password>admin123</password>  
    </server>  
    <server>  
        <id>maven-snapshots</id>  
        <username>admin</username>  
        <password>admin123</password>  
    </server>
  </servers>

2.項(xiàng)目中的pom文件配置

   <distributionManagement>
        <repository>
            <id>maven-releases</id>
            <name>Nexus Release Repository</name>
            <url>http://192.168.124.29:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>maven-snapshots</id>
            <name>Nexus Snapshot Repository</name>
            <url>http://192.168.124.29:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

3.執(zhí)行maven的deploy命令
這是myeclipse中上傳本地項(xiàng)目jar到私服,IDEA中更為簡(jiǎn)單直接點(diǎn)擊maven周期中的deploy即可


image.png

出現(xiàn)uploading信息并且沒(méi)報(bào)錯(cuò)說(shuō)明上傳成功。

然后到對(duì)應(yīng)的倉(cāng)庫(kù)中查看


image.png

注意:

  1. 這里只有Snapshot的倉(cāng)庫(kù)上傳成功,Release倉(cāng)庫(kù)并沒(méi)有上傳成功,這是因?yàn)榘姹咎?hào)名稱結(jié)尾有SNAPSHOT,默認(rèn)以這個(gè)結(jié)尾是不會(huì)上傳到Release倉(cāng)庫(kù)去的,去除就會(huì)上傳到Release倉(cāng)庫(kù)且不會(huì)上傳到快照倉(cāng)庫(kù)

  2. Release倉(cāng)庫(kù)默認(rèn)不支持重復(fù)發(fā)布,可配置

  3. 注意setting中server標(biāo)簽下的id要和pom文件中倉(cāng)庫(kù)配置的id相同,即指定上傳到哪個(gè)倉(cāng)庫(kù)

第三方j(luò)ar包上傳

對(duì)于第三方j(luò)ar包的上傳采用nenus提供的web界面上傳,上傳成功后需要使用該jar包的話,依賴中填寫(xiě)自定義的GAV即可


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 首先私服是一種衍生出來(lái)的特殊的Maven遠(yuǎn)程倉(cāng)庫(kù),構(gòu)建私服的好處請(qǐng)看3.5私服 可以幫助大家建立私服的倉(cāng)庫(kù)管理軟件...
    zlcook閱讀 10,827評(píng)論 0 32
  • |-1-更新內(nèi)容[6.從倉(cāng)庫(kù)解析依賴的機(jī)制(重要)] 1Maven倉(cāng)庫(kù)作用 倉(cāng)庫(kù)用來(lái)存儲(chǔ)所有項(xiàng)目使用到構(gòu)件,在ma...
    zlcook閱讀 6,464評(píng)論 0 25
  • 在 Maven 的術(shù)語(yǔ)中,倉(cāng)庫(kù)是一個(gè)位置(place)。Maven 倉(cāng)庫(kù)是項(xiàng)目中依賴的第三方庫(kù),這個(gè)庫(kù)所在的位置叫...
    41uLove閱讀 7,222評(píng)論 2 3
  • |轉(zhuǎn)述師:田龍| (1)心、性、理、氣、天命……理學(xué)家到底想說(shuō)什么 今天繼續(xù)談?wù)劇洞髮W(xué)》,先來(lái)回顧一下昨天留下的問(wèn)...
    離瀟閱讀 1,727評(píng)論 0 0
  • 《時(shí)間整理術(shù)》,作者牛婧,是一本針對(duì)性的個(gè)人時(shí)間管理書(shū),適用于每個(gè)人的時(shí)間整理術(shù)。我在2015年4月閱讀,與大多數(shù)...
    啟鴻閱讀 369評(píng)論 0 0

友情鏈接更多精彩內(nèi)容