环境准备
ubuntu 20.0操作系统
搭建nexus3 Maven私服
拉取镜像并启动容器
docker run -d --name nexus3 \
--restart=always \
-p 18081:8081 \
-v /mnt/d/dockerv/nexus3/nexus-data:/nexus-data \
sonatype/nexus3
注:1、nexus-data中的所有文件会映射到 指定的宿主机文件夹种,所以需要打开 /mnt/d/dockerv/nexus3/nexus-data 这个文件夹的权限 直接设置777
2、本地没有镜像会拉取最新的镜像
3、需要完全启动后才能访问,可通过docker logs nexus3 查看 出现Started Sonatype Nexus OSS 3.28.1-01 就是启动成功(我第一次在本地虚拟机中搭建的,浏览器访问18081发现访问不了,后来重启了一下虚拟机发现好了可以访问了,具体需要后续研究下)
相关设置
1、连接后点击登陆时会提示初始密码的位置(旧版本默认密码为admin123)
/mnt/d/dockerv/nexus3/nexus-data/admin.password
查看此文件 填入密码就能登陆成功,登陆成功后会提示改新密码
Maven向私服推包与下载
推包
mvn deploy:deploy-file -Dfile="dlanqi.core.mysql-1.0.9.jar" -DgroupId="dlanqi.core.mysql" -DartifactId="dlanqi.core.mysql" -Dversion="1.0.9" -Dpackaging=jar -Durl="http://192.168.110.106:18081/repository/private-release/" -DrepositoryId="private-release"
Dfile:包所在的本地路径
Durl:需要填发布的远程仓库路径
DrepositoryId:远程仓库的id
下载包(本地maven setting配置)
设置maven的settings.xml(详细说明),使本地仓库可以推送包和访问包
<?xml version="1.0" encoding="UTF-8"?>
<settings>
<localRepository>D:\Apache\apache-maven-3.6.3\repository</localRepository>
<interactiveMode>true</interactiveMode>
<offline>false</offline>
<mirrors>
<mirror>
<id>dlanqi.core</id>
<name>dlanqi maven</name>
<url>http://192.168.110.106:18081/repository/private-release/</url>
<mirrorOf>private-release</mirrorOf>
</mirror>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<!-- <mirrorOf>central</mirrorOf> -->
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>development</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<repositories>
<repository>
<id>private-release</id>
<url>http://192.168.44.139:18081/repository/private-release/</url>
</repository>
<repository>
<id>private-snapshot</id>
<url>http://192.168.44.139:18081/repository/private-snapshot/</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>development</activeProfile>
</activeProfiles>
<servers>
<server>
<id>private-release</id>
<username>admin</username>
<password>123456</password>
</server>
<server>
<id>private-snapshot</id>
<username>admin</username>
<password>123456</password>
</server>
</servers>
</settings>
详细说明:
localRepository:本地仓库的路径
mirrors: 配置远程库 mirrors中的id为远程登陆库中的repository的id
profile: 配置远程库 profile中的id为自己命名的配置id
activeProfiles:激活profile中的id对应的配置
server: 远程私服的各仓库的登陆用户名和密码(用户名和密码在nexus中自己创建,并分配角色)
Nexus简介及仓库介绍
一、Nexus的作用
指定私服的中央地址、将自己的Maven项目指定到私服地址、从私服下载中央库的项目索引、从私服仓库下载依赖组件、将第三方项目jar上传到私服供其他项目组使用。
二、Nexus仓库
一般用到的仓库种类是hosted、proxy。Hosted代表宿主仓库,用来发布一些第三方不允许的组件,比如oracle驱动、比如商业软件jar包。Proxy代表代理远程的仓库,最典型的就是Maven官方中央仓库、JBoss仓库等等。如果构建的Maven项目本地仓库没有依赖包,那么就会去这个代理站点去下载,那么如果代理站点也没有此依赖包,就回去远程中央仓库下载依赖,这些中央仓库就是proxy。 代理站点下载成功后再下载至本机。
hosted 类型的仓库,内部项目的发布仓库,需要添加到maven-public中
releases 内部的模块中release模块的发布仓库
snapshots 发布内部的SNAPSHOT模块的仓库
3rd party 第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去
proxy 类型的仓库,从远程中央仓库中寻找数据的仓库
注:意味着可以代理阿里云的,或者其它的远程库,然后本地就不需要配置阿里云的库了,不过回把阿里云的下载到私服里占空间
group 类型的仓库,组仓库用来方便我们开发人员进行设置的仓库