Linux使用docker搭建maven私有倉庫


引言

在實際開發工作中,通常需要搭建maven私有倉庫,今天就教大家如何搭建一套maven的私有倉庫

Nexus介紹

Nexus 是Maven倉庫管理器,如果你使用Maven,你可以從Maven中央倉庫 下載所需要的構件(artifact),但這通常不是一個好的做法,你應該在本地架設一個Maven倉庫服務器,在代理遠程倉庫的同時維護本地倉庫,以節省帶寬和時間,Nexus就可以滿足這樣的需要。此外,他還提供了強大的倉庫管理功能,構件搜索功能,它基於REST,友好的UI是一個extjs的REST客戶端,它占用較少的內存,基於簡單文件系統而非數據庫。這些優點使其日趨成為最流行的Maven倉庫管理器。

安裝docker

請參考筆者另一篇文章————物理機安裝Centos系統

docker中安裝nexus3

1. 拉取鏡像

##在之前可以通過docker search nexus  命令搜索一下docker公有庫在的 nexus相關的鏡像
docker pull sonatype/nexus3

2. 建立數據儲存文件夾

##建立數據存放文件夾,用於docker中nexus的數據與本地物理機映射
mkdir -p /usr/local/nexus3/nexus-data
##更改權限
chown 777 /usr/local/nexus3/nexus-data

3. 安裝並運行容器

docker run -d -p 8081:8081 --name docker-nexus3 -v /usr/local/nexus3/nexus-data:/nexus-data sonatype/nexus3

安裝完成

通過web訪問管理端(記得配置防火牆):http://10.10.10.10:8081/

配置Nexus

密碼配置

進入Nexus3主頁后,點擊右上角“Sign in”

提示輸入密碼,並告知你的密碼儲存位置
Your admin user password is located in /nexus-data/admin.password on the server.
因為docker中nexus3的數據儲存位置與本地物理機建立了映射關系,所有在物理機上的地址應該是
/usr/local/nexus3/nexus-data/admin.password

配置阿里雲代理倉庫

  1. 新建倉庫(Create repository)
  2. 選擇maven2(proxy)
  3. 填寫倉庫名稱——maven-aliyun,並填入倉庫url http://maven.aliyun.com/nexus/content/groups/public
  4. 將創建的maven-aliyun放入到maven-public中

創建項目私有庫

  1. 創建兩個倉庫(使用maven2(hosted)類型的庫),分別選擇Snapshot 和 Release,命名為(java-snapshout 和 java-release)
  2. 創建一個Group類型倉庫,將java-release和之前創建的阿里代理庫添加其為成員,當客戶端拉取jar包的時候,會從阿里雲和私有的release庫中拉取(命名為java-group)

創建用戶

  1. 創建角色(develop),並分配nx-all權限
  2. 創建用戶(test),並授予develop角色

本地使用

修改本地maven配置文件(conf/setting.xml)

1.servers節點下添加以下內容(username和password為剛剛在nexus3中添加的用戶和其密碼)

    <server>
      <id>nexus-xu</id>
      <username>test</username>
      <password>123456</password>
    </server>
	<server>
      <id>releases</id>  <!--對應pom.xml的id=releases的倉庫-->
      <username>test</username>
      <password>123456</password>
    </server>
     <server>
      <id>snapshots</id> <!--對應pom.xml中id=snapshots的倉庫-->
      <username>test</username>
      <password>123456</password>
    </server>

2.mirrors節點下添加以下內容

    <mirror>
        <id>nexus-xu</id>//對應上面的用戶名和密碼
        <name>internal nexus repository</name>
        <!--鏡像采用配置好的組的地址-->
        <url>http://10.10.10.10:8081/repository/java-group/</url>
        <mirrorOf>!internal.repo,*</mirrorOf>
    </mirror>

項目中發布

在pom中的project節點下配置如下內容

    <distributionManagement>
        <repository>
            <!--id對應着maven的setting.xml中的用戶賬戶-->
            <id>releases</id>
           <!--   如果沒有寫xxx-SNAPSHOUT,默認發布到release     -->
            <url>http://10.10.10.10:8081/repository/java-release/</url>
        </repository>

        <snapshotRepository>
            <id>snapshots</id>
            <url>http://10.10.10.10:8081/repository/java-snapshot/</url>
        </snapshotRepository>
    </distributionManagement>


免責聲明!

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



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