Nexus3 是一个仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。
平常我们在获取 maven 仓库资源的时候,都是从 maven 的官方(或者国内的镜像)获取。团队的多人员同样的依赖都要从远程获取一遍,从网络方面来说,这是非常耗时的。这时候就需要在局域网内部署一个 Nexus3 用来管理 Maven(apt、yum、gradle、pypi、docker 等等)仓库。
有些公司都不提供外网给项目组人员,因此就不能使用 maven 访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建 Nexus3 私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了 Nexus3 私服的电脑访问 maven 的远程仓库。
一、私服NEXUS安装部署
1.1 官网下载
下载地址: https://www.sonatype.com/products/repository-oss-download
1.2 安装部署
scp Downloads/nexus-3.65.0-02-unix.tar.gz root@10.211.55.38:~
scp Downloads/jdk-8u391-linux-aarch64.tar.gz root@10.211.55.38:~
tar -zxvf nexus-3.65.0-02-unix.tar.gz -C /opt/
tar -zxvf jdk-8u391-linux-aarch64.tar.gz -C /opt/vim ~/.bash_profile
# 内容BEGIN
export PATH=$PATH:'/opt/nexus-3.65.0-02/bin'
export JAVA_HOME='/opt/jdk1.8.0_391'
PATH=$PATH:$JAVA_HOME/bin
# 内容ENDsource ~/.bash_profile
[root@nexus ~]# nexus
WARNING: ************************************************************
WARNING: Detected execution as "root" user. This is NOT recommended!
WARNING: ************************************************************
Usage: /opt/nexus-3.65.0-02/bin/nexus {start|stop|run|run-redirect|status|restart|force-reload}
提示
Detected execution as "root" user. This is NOT recommended!
解决
# https://www.cnblogs.com/fzhu/articles/15248776.html
vim /opt/nexus-3.65.0-02/bin/nexus.rc
# 1.加入run_as_user=root
# 2.或者加入系统变量export RUN_AS_USER=root
# 3.vim nexus; 成run_as_root=false
vim /opt/nexus-3.65.0-02/bin/nexus
# 4.或者添加nexus用户(非必要),即:
useradd nexus
chown -R nexus:nexus /opt/nexus
然后 su nexus 执行:./nexus start 就成功了。
关闭防火墙
# 关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
访问: http:10.211.55.38:8001
cat /opt/sonatype-work/nexus3/admin.password
9ed814d8-f1ad-4a07-b57f-85fe79eb9918
点击Next进行修改密码,输入新密码进行修改,这里我改成admin123
Nexus 有 3 个类型的数据仓库,分别是 hosted,proxy,group
hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件以及自己或第三方的项目构件;
proxy 代理仓库:代理公共的远程仓库;
group 仓库组:Nexus 通过仓库组统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。
Nexus 预定义了 2 个本地仓库,分别是 maven-releases, maven-snapshots
- maven-releases: 这里存放我们自己项目中发布的构建,通常是 Release 版本的也就是正式版。
- maven-snapshots: 这个仓库非常的有用,它的目的是让我们可以发布那些非 release 版本,非稳定版本,也就是快照版。
手动上传本地 jar 包,例 ojdbc6-11.2.0.4.jar
(当然你可以任选 jar 包上传)
这样一个jar包就上传成功了。
如果你的工程中,使用的 jar 包,在私服中没有,他就会自动连接远程仓库进行下载,这不是我们希望的结果,我们希望它去阿里 maven 库去下载,这样下载速度会更快。
我们需要创建一个代理仓库,代理阿里Maven仓库
阿里仓库地址: https://developer.aliyun.com/mvn/guide
点击保存,然后选择maven-public
完成!
maven配置 conf/settings.xml
上传
<servers><!-- 发布版 --><server><id>releases</id><username>admin</username><password>admin123</password></server><!-- 快照版 --><server><id>snapshots</id><username>admin</username><password>admin123</password></server>
</servers>
下载
<mirrors><mirror><id>nexus</id><mirrorOf>*</mirrorOf><name>nexus maven</name><url>http://10.211.55.38:8081/repository/maven-public/</url></mirror>
</mirrors>
项目配置
<distributionManagement><repository><id>releases</id><name>maven-releases</name><url>http://10.211.55.38:8081/repository/maven-releases/</url><uniqueVersion>true</uniqueVersion></repository><snapshotRepository><id>snapshots</id><name>maven-snapshots</name><url>http://10.211.55.38:8081/repository/maven-snapshots/</url><uniqueVersion>true</uniqueVersion></snapshotRepository>
</distributionManagement>
只要执行命令 mvn deploy即可。
这里配置了两个仓库,一个正式版、一个快照版,maven 是如何区分你要发布到哪一个仓库呢?
如果你的版本带着 releases,也就是 0.0.1-releases,就会发布到 maven-releases。
如果你的版本带着 snapshots,也就是 0.0.1-snapshots,就会发布到 maven-snapshots。
装依赖到私服快照仓
mvn deploy:deploy-file
-DgroupId=com.oracle.database.jdbc
-DartifactId=ojdbc6
-Dversion=11.2.0.4
-Dpackaging=jar
-Dfile=~/Downloads/ojdbc6-11.2.0.4.jar
-Durl=http://10.211.55.38:8081/repository/maven-snapshots/
-DrepositoryId=snapshots
二、安装依赖到本地
mvn install:install-file
-DgroupId=com.oracle.database.jdbc
-DartifactId=ojdbc6
-Dversion=11.2.0.4
-Dpackaging=jar
-Dfile=~/Downloads/ojdbc6-11.2.0.4.jar
详细笔记后续更新…