日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Nexus3搭建本地仓库

發布時間:2024/8/1 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Nexus3搭建本地仓库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、安裝Nexus3

1、docker-compose.yaml 配置

注:8081端口是開放給后臺使用的,5000和5001端口是開放給倉庫使用的,換成別的也可以,只要配置docker倉庫時填寫開放的端口就可以了,我沒有單獨 映射,都用的8081

version: "3.0" services:nexus:image: sonatype/nexus3:3.38.1container_name: nexus3ports:- 8081:8081- 5000:5000- 5001:5001environment:NEXUS_CONTEXT: nexus3volumes:- ./data:/nexus-dataenvironment:ES_JAVA_OPTS: "-Xmx1024m -Xms1024m"

2、啟動nexus

使用 docker-compose up -d 啟動啟動,后訪問 http://192.168.40.147:8081/

登錄用戶名admin密碼通過 cat data/admin.password 查看
登錄后可修改密碼為好記的密碼

3、安裝可能遇到問題

問題:
啟動后通過docker ps -a查看nexus3的狀態為退出,在docker-compose.yaml同級目錄下可查看其啟動的日志,通過 docker-compose logs -f 命令查看,發現沒有權限訪問宿主機創建文件目錄

解決方法:
可手動創建 mkdir data/instances 創建完后再查看狀態為啟動了
如果還未解決:授權 chmod 777 data/

二、配置docker倉庫

1、概述

  • 默認倉庫說明
    maven-central:maven中央庫,默認從https://repo1.maven.org/maven2/拉取jar
    maven-releases:私庫發行版jar,初次安裝請將Deployment policy設置為Allow redeploy
    maven-snapshots:私庫快照(調試版本)jar
    maven-public:倉庫分組,把上面三個倉庫組合在一起對外提供服務,在本地maven基礎配置settings.xml或項目pom.xml中使用

  • Nexus倉庫類型介紹
    Nexus3 提供了的3種類型的Docker倉庫,前兩者都可以創建多個倉庫,最后一個則可以將他們全部聚合到一個URL來訪問。
    hosted:本地倉庫,通常我們會部署自己的構件到這一類型的倉庫。比如公司的第二方庫。
    proxy:代理倉庫,它們被用來代理遠程的公共倉庫,如maven中央倉庫。
    group:倉庫組,用來合并多個hosted/proxy倉庫,當你的項目希望在多個repository使用資源時就不需要多次引用了,只需要引用一個group即可。

  • 2、創建Blob Stores

    填寫name,路徑會自動生成,你也可以自己修改掛載地址

    blob stores有兩個,一個是系統默認的,一個是剛創建的。如果不想自己創建,使用系統默認的文件存儲目錄也是可以的。到時候創建repository時,存儲目錄選擇default就可以了。新創建的目錄,可以在/data/blobs/目錄下面可以看到。

    3、配置倉庫

    1)配置hosted類型的


    hosted類型倉庫用作我們的私有倉庫。注意紅框中的配置,填寫完畢,點擊創建倉庫

    上圖的Hosted設置選項,選項中有三個值:
    Allow redeploy:允許同一個版本號下重復提交代碼, nexus以時間區分
    Disable redeploy:不允許同一個版本號下重復提交代碼
    Read-Only:不允許提交任何版本
    原生的maven-releases庫是Disable redeploy設置, maven-snapshots是Allow redeploy。

    2)配置proxy類型的

    proxy類型倉庫,可以幫助我們訪問不能直接到達的網絡,如另一個私有倉庫,或者國外的公共倉庫


    這里推薦幾個遠程倉庫:

    jboss的maven中央倉庫地址:http://repository.jboss.com/maven2/
    阿里云的maven中央倉庫地址:http://maven.aliyun.com/nexus/content/groups/public/
    apache的maven中央倉庫地址:http://repo.maven.apache.org/maven2/

    3)配置group類型的


    必須將hosted repositories【托管資源庫】的順序放在proxy repositories【代理資源庫】之前,因為一個group【組資源庫】中可以涵括這些托管資源庫和代理資源庫。而一整個的group是作為一個public,一個接口給別人使用的。所以當查找架包的時候,如果代理資源庫在前面,那就是先從遠程去查找jar,而不是先從托管資源庫(本地倉庫)去查找是否有jar。這樣訪問外網的消耗比起來在本地查找,當然是將托管資源庫放在代理資源庫之前的優先位置了。

    4、Maven配置

    apache-maven-3.6.3下的setting.xml文件和項目中的pom.xml文件的關系是:settting.xml文件是全局設置,而pom.xml文件是局部設置。pom.xml文件對于項目來說,是優先使用的。而pom.xml文件中如果沒有配置鏡像地址的話,就按照settting.xml中定義的地址去查找。

    如上圖方式獲取組倉庫smart_group的倉庫地址,修改setting.xml文件如下:

    <localRepository>d:/maven_test/</localRepository><!--nexus服務器,id為組倉庫name--><servers> <server> <id>custom_group</id> <username>admin</username> <password>admin123</password> </server> </servers> <!--倉庫組的url地址,id和name可以寫組倉庫name,mirrorOf的值設置為central--> <mirrors> <mirror> <id>custom_group</id> <name>custom_group</name> <url>http://192.168.124.189:8081/repository/custom_group/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors>

    修改后可以重新編譯項目,必須添加參數-U,(-U,–update-snapshots,強制更新releases、snapshots類型的插件或依賴庫,否則maven一天只會更新一次snapshot依賴)。代理倉庫會從遠程中央倉庫下載jar包。

    mvn clean compile -U

    5、管理平臺上傳三方jar包

    有些jar是第三方提供的,在中央倉庫中是沒有的,我們可以上傳這些本地三方jar包到hosted repository宿主倉庫中。


    上傳成功后,就可以看到hosted repository和group repository中已經有了剛上傳的三方jar包

    6、命令上傳三方jar包

    在setting.xml配置文件中添加hosted repository server

    <!--id自定義,但是在使用命令上傳的時候會用到--> <server> <id>custom_hosted</id> <username>admin</username> <password>admin123</password> </server>

    使用如下命令上傳jar包:

    mvn deploy:deploy-file -DgroupId=com.sinoeyes -DartifactId=hspharm-paas-enum -Dversion=1.0.0-dev2.0-SNAPSHOT -Dpackaging=jar -DpomFile="E:\hspharm\work\hspharm-paas-enum-1.0.0-dev2.0-SNAPSHOT.pom" -Dfile="E:\hspharm\work\hspharm-paas-enum-1.0.0-dev2.0-SNAPSHOT.jar" -Durl=http://192.168.180.47:8081/repository/hspharm-host/ -DrepositoryId=hspharm-host

    命令解釋:

    -DgroupId=byd.ghy            自定義
    -DartifactId=portal-auth             自定義
    -Dversion=1.0.0                自定義,三個自定義,構成pom.xml文件中的標識
    -Dpackaging=jar               傳的類型是jar類型
    -Dfile=D:\auth-server.jar            jar包的本地磁盤位置
    -Durl=http://ip:8081/repository/custom_hosted/  hosted資源庫的地址
    -DrepositoryId=custom_hosted         需要和setting.xml文件中配置的ID一致

    上傳成功后,hosted repository中已經可以看到了

    7、deploy部署jar包到私服

    release和snapshots jar包區別

    SNAPSHOT版本代表不穩定(快照版本),還在處于開發階段,隨時都會有變化。
    當上傳同樣的版本號jar包的時候,SNAPSHOT會在版本號的后面自動追加一串新的數字,即日志標簽,
    nexus會根據日志標簽區分出不同的版本,在maven引用時,如果使用的是snapshot版本,
    重新導入maven的時候,會去私庫拉取最新上傳的代碼。

    RELEASE則代表穩定的版本(發布版本),一般上線后都會改用RELEASE版本。
    也就是說1.0,2.0這樣的版本只能有一個,也就是說當前版本號下,不可能出現不同的jar。
    創建snapshot倉庫

    可以在nexus上添加一個snapshot倉庫,專門用于存放snapshot版本的jar包。snapshot倉庫也是hosted類型的,創建方式和hosted repository類型。創建好后,加入到組倉庫里面就可以了。

    一定要選擇Deployment Policy為allow redeploy


    同樣的操作,創建Release類型的倉庫,并加入到組中

    8、項目pom.xml文件配置

    可以在項目的pom文件中設置具體的relaeses庫和snapshots庫。如果當前項目的版本號的后綴名中帶著-SNAPSHOT,類似***-SNAPSHOT,就會將項目jar包提交到snapshots庫中,沒有帶-SNAPSHOT的話會提交releases庫中。

    在pom.xml文件中配置 distributionManagement 節點如下,在項目中執行deploy命令后,jar包將會被上傳到nexus中。

    setting.xml中配置

    <server> <id>custom_snapshots</id> <username>admin</username> <password>admin123</password> </server> <server> <id>custom_releases</id> <username>admin</username> <password>admin123</password> </server>

    pom.xml配置

    <repositories><repository><id>custom_group</id><name>Nexus Repository</name><url>http://192.168.124.189:8081/repository/custom_group/</url><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></repository></repositories><pluginRepositories><pluginRepository><id>custom_group</id><name>Nexus Plugin Repository</name><url>http://192.168.124.189:8081/repository/custom_group/</url><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></pluginRepository></pluginRepositories> <!--項目分發信息,在執行mvn deploy后表示要發布的位置。有了這些信息就可以把網站部署到遠程服務器或者把構件jar等部署到遠程倉庫。 --><distributionManagement><repository><!--部署項目產生的構件到遠程倉庫需要的信息 --><id>custom_releases</id><!-- 此處id和settings.xml的id保持一致 --><name>Nexus Release Repository</name><url>http://192.168.124.189:8081/repository/custom_releases/</url></repository><snapshotRepository><!--構件的快照部署到哪里?如果沒有配置該元素,默認部署到repository元素配置的倉庫,參見distributionManagement/repository元素 --><id>custom_snapshots</id><!-- 此處id和settings.xml的id保持一致 --><name>Nexus Snapshot Repository</name><url>http://192.168.124.189:8081/repository/custom_snapshots/</url></snapshotRepository></distributionManagement>

    默認地,maven編譯打包不會下載SNAPSHOT版本的jar包,所以還需要在pom.xml文件中配置支持下載snapshot版本jar包。

    mvn clean deploy -Dmaven.test.skip=true

    總結

    以上是生活随笔為你收集整理的Nexus3搭建本地仓库的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。