搭建maven私有中央倉庫


1.nexus下載

這邊也是直接給出下載的地址: https://www.sonatype.com/download-oss-sonatype,如果下載不起,可以在百度網盤中下載

鏈接:https://pan.baidu.com/s/1fYJdSehWDLNqGdiSCuhTCQ
提取碼:812g

下載后解壓文件

2.nexus啟動

進入加壓目錄的bin目錄如:D:\Program Files\nexus-3.18.1-01-win64\nexus-3.18.1-01\bin,打開cmd窗口,輸入命令:nexus /run

等待一段時間后出現

當看到這個畫面的時候表示,nexus已經啟動完成

3.訪問nexus倉庫

在瀏覽器中輸入 localhost:8081 默認用戶名和密碼是: admin,默認密碼:admin123,或者在

登陸后提示修改 ,如修改文admin123

4.倉庫相關配置

maven倉庫類型

maven倉庫類型只有3中,分別是: hosted、proxy、group

  • hosted:宿主類型 內部項目的發布倉庫,專門用來存儲我們自己生成的jar文件
  • proxy:代理類型 從遠程中央倉庫中尋找數據的倉庫,如可配置阿里雲maven倉庫
  • group:組類型 組倉庫用來方便我們開發人員進行設置的倉庫

簡單來說: group = hosted+proxy

版本類型

  • release:專用於部署發布版本的jar
  • snapshot:專用於部署快照版本的jar,jar都是以-SNAPSHOT結尾,pom中version需以-SNAPSHOT(必須大寫)結尾
  • mixed:可包含release和snapshot版本

權限管理

數據權限:repository權限有兩種類型:

  • repository admin
  • repository view

每種類型又有6種權限標識,分別是:*,add,browse、delete、edit、read,*包含其它5種權限,也可以自定義操作標識,正常系統的生成權限足夠使用

增加阿里代理倉庫

第一步 按照步驟添加新的代理源

第二步選擇添加maven2的代理

第三步添加代理

Name 填寫 aliyun, URL輸入:http://maven.aliyun.com/nexus/content/groups/public/,其他值默認。

選擇Configuration > Repository, 雙擊 maven-public, 在Group區域將aliyun移到右側Members, 上移到maven-central的上面, 點擊 Save。

 

5.項目中配置連接參考:

 Step1: 找到你本地的maven安裝目錄,我的在D:\Program Files\apache-maven-3.6.3\conf。 然后呢,到conf目錄下,打開setting.xml。 找到<servers></servers>這個標簽,在里面添加兩個<server></server>配置。

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

配置后如圖

Step2: 打開你的Maven項目,在pom.xml里面加兩段.

a.先配置遠程倉庫地址

    <repositories>
        <!-- 配置nexus遠程倉庫 -->
        <repository>
            <id>nexus</id>
            <name>Nexus Snapshot Repository</name>
            <url>http://127.0.0.1:8081/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

<repositories>的配置,你可以在它下面添加多個<repository> ,每個<repository>都有它唯一的ID,一個描述性的name,以及最重要的,遠程倉庫的url。此外,

<releases><enabled>true</enabled></releases>告訴Maven可以從這個倉庫下載releases版本的構件

<snapshots><enabled>false</enabled></snapshots>告訴Maven不要從這個倉庫下載snapshot版本的構件。

禁止從公共倉庫下載snapshot構件是推薦的做法,因為這些構件不穩定,且不受你控制,你應該避免使用。當然,如果你想使用局域網內組織內部的倉庫,你可以激活snapshot的支持。

b.配置打包時發布jar包到私有倉庫

在pom文件中加入distributionManagement節點,注意:pom.xml中repository里的id需要和.m2中setting.xml里的server id名稱保持一致

    <distributionManagement>
        <repository>
            <id>releases</id>
            <name>User Project Release</name>
            <url>http://127.0.0.1:8081/repository/maven-releases</url>
        </repository>
        <snapshotRepository>
            <id>snapshot</id>
            <name>User Project SNAPSHOTS</name>
            <url>http://127.0.0.1:8081/repository/maven-snapshots</url>
        </snapshotRepository>
    </distributionManagement>

Step3.打包jar包到私有maven倉庫

要注意:如果想要發布到遠程倉庫, 使用IDEA開發的話,打包不能用package,而要選擇deploy。或者使用mvn命令:mvn clean deploy -xxx

 

注意:如果想發布到snapshot倉庫中,則需要在版本號后加上-SNAPSHOT(注意這里必須是大寫)

也就是pom.xml文件中version 要改成 1.0-SNAPSHOT 

<version>1.0-SNAPSHOT</version>

snapshot和release版本的區別

        在使用maven過程中,我們在開發階段經常性的會有很多公共庫處於不穩定狀態,隨時需要修改並發布,可能一天就要發布一次,遇到bug時,甚至一天要發布N次。我們知道,maven的依賴管理是基於版本管理的,對於發布狀態的artifact,如果版本號相同,即使我們內部的鏡像服務器上的組件比本地新,maven也不會主動下載的。如果我們在開發階段都是基於正式發布版本來做依賴管理,那么遇到這個問題,就需要升級組件的版本號,可這樣就明顯不符合要求和實際情況了。但是,如果是基於快照版本,那么問題就自熱而然的解決了,而maven已經為我們准備好了這一切。

        maven會根據模塊的版本號(pom文件中的version)中是否帶有-SNAPSHOT來判斷是快照版本還是正式版本。

如果是快照版本:

  • 那么在發布包的時候mvn deploy時會自動發布到快照版本庫中
  • 而使用快照版本的模塊,在不更改版本號的情況下,直接編譯打包時,maven會自動從鏡像服務器上下載最新的快照版本。

如果是正式發布版本:

  • 那么在發布包的時候mvn deploy時會自動發布到正式版本庫中,
  • 而使用正式版本的模塊,在不更改版本號的情況下,編譯打包時如果本地已經存在該版本的模塊則不會主動去鏡像服務器上下載。

        所以,我們在開發階段,可以將公用庫的版本設置為快照版本,而被依賴組件則引用快照版本進行開發,在公用庫的快照版本更新后,我們也不需要修改pom文件提示版本號來下載新的版本,直接mvn執行相關編譯、打包命令即可重新下載最新的快照庫了,從而也方便了我們進行開發。

 

打包之后,登錄maven倉庫地址:ip:port. 你看,已經OK了,可以看到包已經在私有庫了。

 這樣就可以在項目中使用了,但是這樣是不允許匿名用戶下載的,會出現:

Could not transfer artifact from/to XXXXXX  Not authorized

如果真要允許匿名用戶能夠下載,需要配置:

 

 

 將“Allow anonymous users to access the server”勾選就可以匿名訪問了,去掉則需要用戶名和密碼

重復發布的時候出現:

Return code is: 400, ReasonPhrase: Repository does not allow updating assets: maven-releases.

原因:經排查發現是因為重復發布導致的。maven私有倉庫默認不允許重復部署。

瀏覽器登錄nexus管理界面–>設置圖標–>Repository–>Repositories–>maven-releases–>Hosted–>請選擇‘Allow redeploy’策略,默認是disable策略,然后保存。 請注意,不同版本的nexus,進入的路徑可能有細微區別。

  • 如果出現400,需要注意項目下的pom.xml文件和maven使用的setting.xml文件的配置是否一致。
  • 如果出現401,需要檢查maven使用的setting.xml中的帳號和密碼是否正確,相應的repository是否為“Allow Redeploy”。
  • 如果使用的intellij、eclipse或myeclipse需要注意ide中使用的setting.xml和maven命令行下的setting.xml是否一致;否則或出現許多莫名其妙的問題。

https://blog.csdn.net/weixin_34026484/article/details/91962553

https://www.liangzl.com/get-article-detail-38682.html


免責聲明!

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



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