nexus 私服搭建
官网:https://help.sonatype.com/repomanager3
【docker 搭建 nexus】
docker 镜像拉取
镜像地址:https://hub.docker.com/r/sonatype/nexus3/tags/?page=1&ordering=last_updated
启动镜像
docker run -d -p 8081:8081 --name nexus3 --restart=always -v D:\docker\nexus\nexus-data:/var/nexus-data -v D:\docker\nexus\sonatype-work:/opt/sonatype/sonatype-work/nexus3 sonatype/nexus3
【nexus 简介】
nexus 是一个强大的 maven 仓库,他可以将远程仓库和公司自己的内部仓库的依赖统一管理起来,开箱即用不需要任何数据库来存储。图示如下:
【基本概念】
repositories 类型
nexus 中仓库的类型有三种,分别为:Proxy、Hosted、Group
-
Proxy :用来关联代理中央Maven仓库,和咱本地maven远程中央仓库一个意思,基本的配置界面如下:
可以看到上面的 remote storage
及代理的中央仓库地址,我们这里使用阿里云私服为中央仓库。
-
Hosted:这个类型用于定义我们自己的私服,比如公司内部的一些公共依赖包,就可以传到上面。
hosted
还有三种策略,用于分别存储不通场景产出的依赖。
- release:一般用于存储已经正式发布的依赖。
- snapshot:用于存储未发布的依赖。
- Mixed: 混合,已发布和未发布的都有。
-
group:把仓库聚合起来对外提供使用。配置如下图:
如图将远程中央仓库和快照仓库、已发行仓库合并使用。
【创建自定义的私服】
创建中央仓库
找到
Repository
点击菜单Repositories
点击create repository
,打开界入会让选择recipe
,每一种recipe
在配置上会存在一些区别,我们就选maven2
,中央仓库穿件选择的类型是Proxy
,所以我们要选择就是maven2(proxy)
,选择后打开接口,配置是目标的中央仓库地址即可。配置后接口参看上面类型。
创建自定义仓库
还是一样点击
create repository
选择maven(Hosted),进入界面后根据自己使用的场景选择version policy
,特别注意有一个deployment policy
的选项,这个选项是用来设置,是否可以往当前仓库发布依赖版本的,如果选了disable
那将不能不发依赖版本到当前仓库。
创建合并仓库组
还是一样点击
create repository
选择maven(group),取个名,然后下面有一个穿梭框,吧需要合并的仓库选到membwers
中即可。
【使用 nexus 仓库】
修改 setting.xml
打开本地的maven 的 setting.xml,找到</servers>
标签,创建一个<server>
,id 可以随便起。username/password
为nexus登录用户。这个地方配置这个server
主要是为了客户端可以往nexus
私服发布更新依赖。
<server>
<id>leyang</id>
<username>admin</username>
<password>admin123</password>
</server>
使用私服仓库
使用私服仓库有两种配置方式,在setting.xml
中全局配置或者在当前项目pom
中配置。
-
pom.xml 中配置
一般如果是公司的私服,放的是一些公用的依赖,建议在
setting.xml
配置,这样就省得在每个项目的pom
中都要去配置,如果项目临时需要接第三方,适用别人的依赖库,可以使用这种,单独配置。
- pom.xml 配置
注意事项:mvn deploy 时发布到Release
还是snapshot
跟当前pom中的版本声明有关系,如果版本中声明为<version>x.x.x-SNAPSHOT</version>
,mvn deploy
会发布到快照中,如果没有带后缀或者指定了RELEASE
就发布到RELEASE
中。
<!-- 配置拉取依赖的地址 -->
<repositories>
<repository>
<id>leyang</id>
<name>leyang-Release</name>
<!-- 这个地址我用的是一个类型为`group`的仓库,包含了中央仓库、发布库、快照库 -->
<url>