Nexus的maven私有仓库搭建
一、了解 maven仓库设置
默认设置
其中:
- maven-central: 预定义的代理
Maven Central
仓库,它包含了大量的开源Java依赖包。 - maven-public: 存储库是一个组合存储库,它包含了maven-releases和maven-snapshots存储库的内容。在Maven项目中使用Nexus 3作为私有仓库时,可以将maven-public存储库配置为Maven项目的主要仓库。
- maven-releases: 存储库用于存储已经发布的Maven依赖包,我们可以设置为需要登录才可以访问,并发布一些团队的工具包等。
- maven-snapshots: 存储库用于存储快照版本的Maven依赖包,一般快照包,我们在开发过程中频繁更改或更新。
但是官方默认是maven2的版本,我们可以删除并添加自己的maven3仓库。
二、新建数据存储
选择file文件存储,并自定义名称
进入相对路径下查看文件夹是否创建成功
三、创建镜像maven3仓库
创建maven3仓库,create repository创建maven-central
:
创建maven3(proxy),选择镜像中心,这里选择的是阿里云的镜像
其他的仓库:
- 阿里-Maven仓库代理源: https://maven.aliyun.com/repository/public
- 腾讯云-Maven仓库代理源: http://mirrors.cloud.tencent.com/nexus/repository/maven-public
- 华为云-Maven仓库代理源: https://repo.huaweicloud.com/repository/maven/
创建maven Group进行归纳镜像仓库 maven-public,并把刚才建立的仓库加入:
接下来创建release和snapshot的私有库(maven-hosted):
- 区分release和snapshot的话,使用
version policy
进行区分
在group中进行导入
四、本地地址接入
复制地址:
假设,你复制的URL为:
http://nexus.example.com/repository/maven_public/
那么,你可以在项目的pom.xml
内直接添加我们的仓库地址:
<repositories>
<repository>
<!-- ID可以自定义,但是要全局唯一 -->
<id>nexus_public</id>
<url>http://nexus.example.com/repository/maven_public/</url>
</repository>
</repositories>
使用maven的插件进行构建(如:mvn clean、mvn install),再添加pluginRepository
节点:
<pluginRepositories>
<pluginRepository>
<!-- ID可以自定义,但是要全局唯一 -->
<id>nexus_public</id>
<name>mirror_from_nexus</name>
<url>https://nexus.pluviose.eu.org/repository/maven_public/</url>
</pluginRepository>
</pluginRepositories>
这样,在maven进行项目依赖包下载时候,会优先到repositories
内寻找,找不到,再到全局settings.xml
内寻找;所以,你也可以在全局setting.xml
内添加上述操作。
当然,在全局内操作,很多人会直接重定向mirror
:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>E:\myDataBase_maven_aliyun</localRepository>
<mirrors>
<mirror>
<id>maven_public</id>
<name>maven_public</name>
<url>http://ip/repository/maven_public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
pom文件打上坐标,重新构建maven
Nexus上也上传了项目jar包
私有仓库发布
Nexus上定义release和snapshot之后,需要对release
和snapshot
有读写权限的用户
管理员默认拥有全部权限
在本地maven的全局配置settings.xml
内,添加用户的密码:
<servers>
<server>
<id>nexus_release</id>
<username>admin</username>
<password>passwordForAdmin</password>
</server>
</servers>
注意id相互对应
在项目的pom.xml
内,配置上对应的release:
<distributionManagement>
<repository>
<id>nexus_release</id>
<url>http://nexus.example.com/repository/maven_release/</url>
</repository>
</distributionManagement>
<id>nexus_release</id>
<url>http://nexus.example.com/repository/maven_release/</url>
</repository>
</distributionManagement>