利用nexus構建maven、docker、npm、gradle私服倉庫

前言

在小型公司發展歷程中,開發對倉庫的依賴不斷提升,java web須要maven倉庫、android須要gradle倉庫、運維須要docker倉庫…… 是時候搞一套倉庫私服了。java

初識nexus

nexus是目前市場上,支持倉庫種類最多,用戶羣體最大的一個倉庫平臺,上述全部的倉庫,它均支持。
android

版本及支持的倉庫
版本及支持的倉庫

安裝nexus

這裏省略安裝步驟,建議使用3.x及以上版本的nexusnginx

配置maven私服

這裏倉庫主要指2種,一種是代理的倉庫,使得內網下載倉庫沒必要要去外網上下載,一種是私有的倉庫,存公司內部jar。web

代理倉庫

使用管理員賬號(默認用戶名admin 密碼admin123 默認端口8080)
docker

建立倉庫
建立倉庫

點擊建立倉庫

選擇maven2(proxy) 代理模式,這裏填寫阿里雲的maven倉庫代理,爲了獲得更快的下載速度。
maven.aliyun.com/nexus/conte…

私有倉庫

選擇host
選擇host

建立私有倉庫
建立私有倉庫

上傳本地jar


首先配置一下maven配置文件的用戶名密碼,我這裏是/Applications/IntelliJ IDEA.app/Contents/plugins/maven/lib/maven3/conf/settings.xml

<server>
      <id>nexus</id>
      <username>admin</username>
      <password>admin123</password>
    </server>複製代碼

其次本地開發工具生成好jar,最後敲命令npm

mvn deploy:deploy-file 
  -DgroupId=com.***
  -DartifactId=***
  -Dversion=1.2.3 
  -Dpackaging=jar 
  -Dfile=D:\***-1.2.3.jar 
  -Durl=http://127.0.0.1:8081/repository/java/ 
  -DrepositoryId=nexus-releases複製代碼

maven使用

修改pom文件,增長如下語句。json

<repositories>
        <repository>
            <id>nexus</id>
            <name>Maven Repository</name>
            <url>http://10.10.100.*:8081/repository/aliyun/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
       </repository>
    </repositories>複製代碼

docker 代理


其中代理地址,我使用了阿里雲的免費倉庫代理地址。
私有倉庫和上面java相似同理,能夠本身操做下

docker使用

終端輸入(這裏我使用域名及端口映射出的docker倉庫)bash

docker login -u admin -p admin123 rep.***.com:10055複製代碼


當返回登陸成功時,說明配置正常。
而後,咱們嘗試pull一個鏡像

docker pull rep.*.com:10055/nginx複製代碼


這裏有個坑,咱們默認出去的多是http,而不少docker鏡像默認拉取的是https,因此會報錯,這裏

vi /etc/docker/daemon.json
手動輸入 { "insecure-registries":["rep.*.com:10055","10.10.100.11:8082"] }
systemctl daemon-reload
systemctl restart docker複製代碼

上傳鏡像app

docker push rep.*.com:10055/<repo-name>:<tag>複製代碼

npm倉庫

建立npm倉庫


鏡像地址填寫阿里的 npm.taobao.org/mirrors/npm…

使用

將npm註冊表寫入本地文件運維

npm config set registry http://localhost:8081/repository/npm/複製代碼

或設置.npmrc 文件

registry = http://localhost:8081/repository/npm-all/複製代碼

發佈npm

npm publish --registry http://localhost:8081/repository/npm-internal/複製代碼

android使用

gradle.properties配置基本信息

MAVEN_URL= http://localhost:8080/nexus/content/**
     MAVEN_SNAPSHOT_URL = http://localhost:8080/nexus/**
     #maven groupId
     GROUP=*
     #帳號
     NEXUS_USERNAME=admin
     #密碼
     NEXUS_PASSWORD=admin123
     # groupid(最終你引用時的名字)
     GROUP_ID = com.*.tools 
     # type
     TYPE = aar
     # description
     DESCRIPTION = dependences lib複製代碼

在Module的build.gradle配置Task

uploadArchives {
         configuration = configurations.archives
         repositories {
             mavenDeployer {
                 snapshotRepository(url: MAVEN_SNAPSHOT_URL) {
                     authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
                 }
                 repository(url: MAVEN_URL) {
                     authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
                 }
                 pom.project {
                    #版本,有更新時修改版本號,在上傳
                     version '1.*.*'
                     #名字
                     artifactId '**'
                     groupId **
                     packaging TYPE
                     description '***'
                 }
             }
         }
     }

     artifacts {
        #編譯的源碼類型
         archives file('***.aar')
     }複製代碼

引用的話,只須要在 project 的 build.gradle中配置

allprojects {
         repositories {
             jcenter()
             maven { url MAVEN_URL }
         }
     }複製代碼

而後正常使用

compile 'com.**.tools:**:1.0.0'複製代碼

結尾

有的以上倉庫,能夠知足絕大部分場景的需求,固然nexus倉庫功能足夠強大,你們能夠對着本身場景研究。

相關文章
相關標籤/搜索