一、介绍
世界上第一个也是最值得信赖的二进制存储库
nexus有收费版和开源免费版,其中的Nexus Repository Manager OSS是开源免费的,其功能基本满足我们的需求,所以本次搭建采用该版本。
官网地址:https://www.sonatype.com/products/nexus-repository
下载地址:https://www.sonatype.com/thanks/repo-oss
文档地址:https://help.sonatype.com/repomanager3
支持仓库
仓库类型说明
- group:仓库聚合,默认是releases>snapshots>central,可以在仓库管理界面引入其他配置的库,并设置顺序
- hosted:私有仓库,存放自己开发的jar
- snapshots:本地项目的快照仓库
- releases: 本地项目发布的正式版本
- proxy:代理类型,可以配置aliyun的仓库
- central:中央仓库
二、安装
源码安装
docker安装
- 查找nexus镜像 docker search nexus
- 获取官方最新版本镜像 docker pull sonatype/nexus3
- 创建存储卷 mkdir -p /docker/nexus/
- 存储卷权限 chmod 755 /docker/nexus/
- 启动容器 docker run -d --restart always --name nexus3 -p 8081:8081 -v /docker/nexus:/var/nexus-data sonatype/nexus3
- 访问服务 ip:端口
- 首次登录 重置admin密码
a. 进入容器 目录/nexus-data/admin.password 获取登录密码
b. docker exec -it nexus3 /bin/bash
c. cat /nexus-data/admin.password - 查看默认仓库 nexus
默认已建好4个库,简单解析下各个库的作用
maven-central 默认配好的中央仓库,指向https://repo1.maven.org/maven2/
maven-releases 一般用于自己存放自己开发项目的稳定版本,默认不能重复发布,即deploy,可以设置为允许重复deploy
maven-snapshots 一般用于存放自己开发项目的快照版本,默认允许重复发布
maven-public 组合库,一般是组合以上三种库,通常在项目中配置这个仓库
三、maven镜像库
代理仓库配置
-
浏览器访问nexus仓库
-
登录管理账户
-
选择设置(登录管理用户才会出现)
-
选择创建仓库
-
选择仓库类型 maven 代理仓库
-
填写仓库信息 (以填写阿里云代理仓库为例)
-
填写仓库名称
-
填写代理服务地址 http://maven.aliyun.com/nexus/content/groups/public
-
选择存储 如果没有特殊需要 默认就可以
-
创建仓库
-
仓库列表就可以查看到代理仓库了
-
调整 maven聚合仓库配置 maven-public仓库配置
-
进入修改页面 并 滑动到底部
-
将代理仓库移动到右侧 并调整顺序
-
保存配置
手动发布jar包
-
浏览器访问nexus仓库
-
登录管理账户
-
选择上传
-
选择上传仓库
-
上传jar包并填写maven信息
-
确认上传
打包发布jar包
- 修改maven配置文件 setting.xml 增加配置项
<server>
<id>****-nexus-releases</id> <!--对应pom.xml的id=releases的仓库-->
<username>****</username>
<password>fegvis-d****vpa1</password>
</server>
<server>
<id>pbkj-nexus-snapshots</id> <!--对应pom.xml中id=snapshots的仓库-->
<username>****</username>
<password>fegvis-d****vpa1</password>
</server>
- 修maven项目主 pom.xml
<distributionManagement>
<repository>
<!--id的名字可以任意取,但是在setting文件中的属性<server>的ID与这里一致-->
<id>****-nexus-releases</id>
<!--指向仓库类型为host(宿主仓库)的储存类型为Release的仓库-->
<url>https://maven.****.com/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>****-nexus-snapshots</id>
<!--指向仓库类型为host(宿主仓库)的储存类型为Snapshot的仓库-->
<url>https://maven.****.com/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
-
编译器插件发布
-
命令发布
mvn deploy
注:releases为发布正式版 snapshots为发布快照版 版本号以-SNAPSHOT结尾为发布快照版本
项目配置私有仓库
修改maven配置文件 setting.xml 增加配置项
<mirror>
<id>****-nexus</id>
<name>****-nexus</name>
<!--镜像采用配置好的组的地址-->
<url>https://maven.****.com/repository/maven-public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
修maven项目主 pom.xml
<repositories>
<repository>
<id>public</id>
<name>aliyun nexus</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
</repository>
<!-- 配置nexus远程仓库 -->
<repository>
<id>****-nexus</id>
<name>****私有maven仓库</name>
<url>https://maven.****.com/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>