在小型公司發展歷程中,開發對倉庫的依賴不斷提升,java web須要maven倉庫、android須要gradle倉庫、運維須要docker倉庫…… 是時候搞一套倉庫私服了。java
nexus是目前市場上,支持倉庫種類最多,用戶羣體最大的一個倉庫平臺,上述全部的倉庫,它均支持。
android
這裏省略安裝步驟,建議使用3.x及以上版本的nexusnginx
這裏倉庫主要指2種,一種是代理的倉庫,使得內網下載倉庫沒必要要去外網上下載,一種是私有的倉庫,存公司內部jar。web
使用管理員賬號(默認用戶名admin 密碼admin123 默認端口8080)
docker
<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複製代碼
修改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倉庫)bash
docker login -u admin -p admin123 rep.***.com:10055複製代碼
docker pull rep.*.com:10055/nginx複製代碼
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 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/複製代碼
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倉庫功能足夠強大,你們能夠對着本身場景研究。