request-free-img

保姆级教程:使用 Nexus 搭建 Maven 私有服务器并发布 JAR 包

前几天网友问我要如何搭建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中。


更多问题探讨,请关注公众号:程序员角