简介
Maven 仓库分为本地仓库、私服仓库和中央仓库。在企业内部,通常会搭建一套私服仓库,用于在不同项目组之间共享 Maven 依赖,避免重复下载;同时也可将项目成果发布到私服,供其他项目复用,作为企业内部的技术资产沉淀。
Nexus 是一款常用的 Maven 私服工具。本文将介绍如何从零搭建一套 Nexus 私服。
安装
访问官网(help.sonatype.com/en/download…),下载对应系统的安装包。
待会我在本地虚拟机(CentOS7)中搭建,下载下面这个版本。
将安装包上传到服务器,解压。
tar -xvf nexus-3.89.1-02-linux-x86_64.tar.gz
进入文件 /bin 目录,启动 nexus。
./nexus start
浏览器输入 IP:8081 进入 nexus 后台管理系统。
首次登录,提示 admin 账户的密码在 /usr/local/dev/sonatype-work/nexus3/admin.password 中,登录成功后会提示重置密码。
cat /usr/local/dev/sonatype-work/nexus3/admin.password
配置
到这 nexus 搭建完成了,接下来打开本地 Maven 的 settings.xml 文件,配置本地 Maven,连接到私服。
需要配置两个地方。
(1)在 mirrors 标签中增加一个镜像源,里面填写私服的信息。
<mirror>
<id>maven_nexus</id>
<name>Maven私服</name>
<url>http://192.168.101.11:8081/repository/maven-public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
如下。
(2)在 servers 标签中增加一个服务地址,里面填私服的账号密码,注意 id 要和上面镜像源中的保持一致。
<server>
<id>maven_nexus</id>
<username>admin</username>
<password>123456</password>
</server>
如下。
需要注意的是,如果你在 nexus 中设置允许匿名访问时,第二步可省略。
在首次登录时也会有弹窗,让你选择,建议不勾选,不允许匿名访问。
使用
使用前,先介绍一下 nexus 默认创建的几个仓库。
其中,
-
maven-central:中央仓库,type=proxy,表示代理模式,当本地没有所需依赖时会去代理地址(中央仓库)下载。
-
maven-releases:存放上传的稳定版 jar,稳定版同版本号默认不允许被覆盖。
-
maven-snapshots:存放上传的快照版 jar,快照版同版本号允许被覆盖。
-
maven-public:对前面三个仓库做了组合,存放了前三者的所有 jar,所以前面在配置本地 Maven 时,仅指定这个仓库即可。
(maven-public 组合了 maven-central、maven-releases、maven-snapshots)
接下来,打开一个项目,在 pom.xml 文件中,添加以下内容,表示部署时将 jar 上传到私服的哪个仓库中。
<distributionManagement>
<!-- 稳定版 -->
<repository>
<id>maven_nexus</id>
<url>http://192.168.101.11:8081/repository/maven-releases/</url>
</repository>
<!-- 快照版 -->
<snapshotRepository>
<id>maven_nexus</id>
<url>http://192.168.101.11:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
需要注意的是,Maven 是通过该项目的 version 末尾是否包含 -SNAPSHOT 判断是稳定版还是快照版的。
执行 mvn clean deploy 命令,将该项目部署到私服仓库中。
查看 nexus 快照仓库,可见该项目 jar 已被上传。
更换版本号为正式版本。
再次执行 mvn clean deploy 命令,可见 jar 被上传至稳定版仓库。
此时,其他连接到私服的本地 Maven 就能直接使用该 jar 包了。