前几天网友问我要如何搭建MAVEN私有服务器,视频来了哈
这个视频我将带着你搭建Nexus并将打好的JAR包发布到NEXUS私有服务器上
这依然是保姆级教程,建议点赞收藏后再观看,需要时随时翻看

Nexus 的核心价值
Nexus可以将常用的依赖库缓存到企业内部服务器中,开发者从私服获取依赖,而不是直接从中央仓库下载
这样做可以大幅减少因网络问题导致的构建失败,提高构建过程的稳定性
也可以将企业自己开发的内部项目部署到私服,供团队其他成员使用
对于企业机密代码,这是一个安全高效的发布方式。
快速搭建 Nexus Maven 私服
好下面我就来演示如何使用最常用的NEXUS来搭建一个MAVEN私服
首先打开NEXUS官网,NEXUS提供了UNIX, WINDOWS和MACOS的版本,选择自己需要的版本下载
这里我们只演示在WINDOWS系统的搭建,其它系统的使用也是类似的
我们点击下载
下载好后我们把它解压到一个目录下
然后进入到BIN目录下,因为NEXUS只能在命令行下运行,所以我们通过终端打开这个目录,
然后输入nexus /run运行它
运行后需要等待一段时间,期间有很多的LOG输出
直到看到这一行started的提示,就表示NEXUS成功启动了
Started Sonatype Nexus OSS 3.76.0-03
登录与初始配置
然后回到上一级目录,再打开ETC目录,打开NEXUS-DEFAULT.PROPERTIES文件
这是NEXUS的配置文件,第一行配置这里显示它工作在8081端口上
现在我们在浏览器里打开LOCALHOST:8081端口
这就是NEXUS的界面,接着我们点击右上角的登录
它提示我们ADMIN用户的密码保存在这个文件中,我们按照它的提示,打开这个文件
然后把这一长串密码复制下来,回到登录界面输入ADMIN,再粘贴刚才复制的那一长串密码
第一次登录成功,它会有一个向导,我们点击下一步
它让我们为ADMIN用户设置一个新的密码,我们随便输入一个
然后是配置是否允许匿名访问私服,我们点击下边这个,不允许匿名访问
然后完成配置向导
然后界面上边这里多了一个设置图标,我们点开它可以对NEXUS进行一些配置
仓库列表详解
首先是这个仓库列表,我们打开它,这里列出了一些仓库列表
第一个是MAVEN-CENTRAL,它的类型是一个PROXY,格式是MAVEN,表示它是外部代理仓库
它的作用是当我们需要下载一个依赖包时,我们私服中没有,它就会去中央仓库下载
之后NEXUS会将下载的依赖缓存到本地
我们点开它,可以看到它的远程中央仓库指向的是MAVEN官方的中央仓库,
https://repo1.maven.org/maven2/
我们知道从这个中央仓库下载
会很慢,有时候还会下载失败,因此我们最好把它改成阿里云的仓库
https://maven.aliyun.com/repository/public
然后保存
第二个仓库叫做MAVEN-PUBLIC,它的类型是GROUP,格式也是MAVEN,那它是什么作用呢
我们点开它,最下边这里显示它的成员有MAVEN-RELEASES, MAVEN-SNAPSHOTS, MAVEN-CENTRAL
也就是说它是一个组合仓库,它包含了这3个仓库,通常我们在实际使用中会直接使用这个MAVEN-PUBLIC的组合仓库,我们返回上一级
第三个仓库叫MAVEN-RELEASES,它的类型是HOSTED表示它是用来存储企业内部开发的包
并且从它的名字我们能知道,它主要用于存储企业内部开发的RELEASE包
第四个仓库叫MAVEN-SNAPSHOTS,它的类型也是HOSTED,因此我们可以判断出它是用于存储企业内部
开发的快照包
SNAPSHOT 和 RELEASE 是两种主要的版本类型,SNAPSHOT 表示一个未完成或不稳定的开发版本,通常用于开发过程中的中间构件
RELEASE 表示一个稳定且正式发布的版本,通常用于生产环境。
我们平时所创建的MAVEN项目,在VERSION这里后边都会带有SNAPSHOT字样,
其实就是表示它是一个开发过程中的快照包
然后下边还有几个仓库,它的格式是NUGET,是用于.NET使用的,我们先不管它
其实NEXUS不仅可以用于MAVEN和.NET的私有仓库,它还有可以用作于很多语言的私有仓库
我们点击创建仓库这个按钮,这里列出了它能作为私有仓库的类型,例如
APT, c++, GO, PYTHON, NPM, YUM等
可以说基本都支持市面上的开发仓库都支持
这里我们就不演示如何去创建其它开发语言的私有仓库的使用了
配置 Maven 连接 Nexus 私服
接下来我们看一下如何使用NEXUS
首先找到我们的MAVEN目录下的CONF目录下的settings.xml文件
我们之前把这个MIRROR的镜像设置成为阿里云的镜像了
我们现在把它改成我们自己的NEXUS私服
ID这里写NEXUS,mirrorOf这里我们指定为*号,也就是所有
name我们写NEXUS-SERVER
URL这里就是NEXUS私服中的PUBLIC仓库
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<name>nexus-server</name>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
我们点击MAVEN-PUBLIC这个条目后边的COPY按钮,在弹出的框中它就给出了仓库地址
我们复制它,然后替换掉之前的阿里云的仓库地址
你应该还记得我们配置NEXUS时,为了安全性着想,是禁止匿名访问的。
那么我们还需要配置一下访问NEXUS私服的帐号
我们找到servers标签,把被注释的这几行拷出来
id是必须和我上边我们添加MIRROR私服时指定的ID一样,也就是NEXUS
然后指定username和password
<server>
<id>nexus</id>
<username>admin</username>
<password>123456</password>
</server>
这样,我们就在MAVEN中配置好了使用NEXUS私服了, 之后我们创建项目需要下载依赖时,就会从我们的私服下载了
验证私服下载是否成功
我们来看一下能不能从私服下载
首先到本地仓库中清所有之前下载的依赖包全部清除
然后,我们打开上个视频中创建的父子工程
然后在项目中执行生命周期中的CLEAN,能看到这时候MAVEN是从我们LOCALHOST地址下载依赖包的
这说明我们的私服仓库已经配置好了
发布 JAR 包到 Nexus 私服(快照版本)
接下来我们看看如何把打好的JAR包发布到NEXUS私有服务器中
我们打开项目的POM.XML文件
在里边加上distributionManagement发布管理
然后添加snapshotRepository表示指定快照包的发布地址信息
ID必须指定我们在SETTINGS.XML文件中的MIRROR中指定的仓库ID
URL这里我们从NEXUS中找到这个SNAPSHOT的仓库地址,点COPY按钮,然后弹出框中出现的URL复制它
然后填到URL这里边
写好后,我们双击MAVEN生命周期的DEPLOY。完成后我们到NEXUS中点击这个仓库,
可以看到现在包已经成功发布到仓库
<snapshotRepository>
<id>nexus</id>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
发布正式 RELEASE 版本
那我们这里发布的还是快照版本,如果我们要发布正式版本应该怎么做呢?
首先我们在POM.XML文件中,VERSION这里因为现在结尾还是带SNAPSHOT的
这表示这是一个开发版本,如果你想发布正式版本的包,那必须把后边这个SNAPSHOT去掉
我们把它删除
这里要注意的是在MAVEN中,是通过版本号后 边的SNAPSHOT来区别是开发版还是RELEASE版
然后在distributionManagement中添加一项repository表示发布正式版
ID和快照版本的一样,URL这里,找到NEXUS中,找到MAVEN-RELEASES这个,点COPY按钮
再把弹出框中的地址复制下来,粘贴到URL中
然后我们再执行一下生命周期的CLEAN,以及DEPLOY。看到执行成功后
我们回到NEXUS中,点击这个RELEASES的仓库,现在可以看到这个正式版本JAR包了。
说明正式版本的发布也成功了
结语
至此,你成功学会了MAVEN私有仓库的安装配置以及将JAR包发布到私服仓库NEXUS中。


