Nexus搭建Maven私服[下篇]——Nexus使用


[Nexus搭建Maven私服[上篇]——Nexus安装](https://blog.leapmie.com/archives/273/)


登录Nexus

点击右上角的login,输入账号密码即可登录,初始账号密码为admin/admin123
21.png

管理仓库

点击左边的Repositories即可打开仓库管理页面
22.png

仓库类型

Nexus中有四种仓库类型group,hosted,proxy,virtual,这里我们不关心virtual,只介绍下另外三种类型:

  • hosted 本地仓库,通常我们会部署自己的构件到这一类型的仓库。
  • proxy 代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
  • group 仓库组,用来合并多个hosted/proxy仓库,通常我们配置maven依赖仓库组。

23.png

Nexus预定义的仓库

Nexus预定义了Public Repositories、3rd Party、Central、Releases、Snapshots这几个主要的分支(不同版本的Nexus对应的名称会有一点差异),主要作用如下:

  • Public Repositories 这是一个group类型的仓库,一般情况下里边包含了其他所有仓库,这样做的好处是我们在maven的pom.xml中只需配置一个仓库链接即可,无需针对所有仓库单独配置。

在PublicRepositories的Configuration页中可以看到包含的仓库组,通过调整顺序可以更改优先匹配的仓库
24.png

  • Central 这是proxy类型的,代理的是https://repo1.maven.org/maven2/,也就是Maven中央仓库
  • 3rd Party 用于部署第三方构件,有些构件如Oracle的JDBC驱动,我们不能从公共仓库下载到,我们就需要将其部署到自己的仓库中
  • Snapshots 用于部署我们自己的snapshot构件
  • Releases 用于部署我们自己的release构件

Release和Snapshots的区别

在配置hosted和proxy类型的仓库时,需要配置Repository Policy指定仓库类型是Release或Snapshots类型。Maven默认情况下是根据构件的版本号去更新依赖构件的,但是在开发过程中我们如果引入的构件还没进入稳定状态,构件也是在不断的修改和发布,如果使用Release类型则必须修改版本号才能更新依赖,针对这种情况我们可选择Snapshots类型。对于Snapshots类型,Maven会从镜像中获取构件,即使不更改版本号也能确保构件是最新的。但是也因为Snapshots类型代表着构件仍处于开发状态,是不稳定的构件,所以要根据实际需要选择Release或Snapshots类型。
25.png

Download Remote Indexes的配置

[这点很重要!]打开Central仓库的Configuration页,在Download Remote Indexes一项中默认是false状态,这是因为Nexus初始状态下防止在用户不知情的情况下自动下载构件,所以要求用户手动修改成true状态,只有修改为true才能下载Maven中央仓库的索引文件。注意所有proxy类型的仓库都要配置Download Remote Indexes为true才可用。
26.png

Download Remote Indexes为true后,选中对应仓库,右键选择Repair Index,然后Nexus就会开始下载远程仓库的索引文件,如果索引文件非常大,可能会花费比较久的时间。
27.png

要测试是否下载成功可以在Browser Index页中查看是否能够打开索引目录。
28.png

proxy仓库配置成功后可在Artifact Search中查找对应的构件,如搜索maven对应的搜索结果如下
29.png

上传私有构件

有些构件如Oracle的JDBC驱动,我们无法从公共仓库下载到,所以我们只能先上传到Nexus,创建私有构件。通常这些无法从公共仓库下载的构件我们会放在3rd party中。

  • 在3rd party仓库的Artifact Upload页中我们可以上传已下载的第三方jar包,步骤如图

210.png

  • 上传后在Maven项目的pom.xml中添加对应的dependency即可引入对应构件

211.png

Maven中使用Nexus

在Maven项目的pom.xml中配置repository指定到我们的public仓库地址即可
(注意:因为我们的public中包含了policy为napshots的仓库,所以在配置repository时需要设定snapshots enable为true)

<repositories>
    <repository>
        <id>public</id>
        <name>Public Repositories</name>
        <url>http://xx.com/nexus/content/groups/public/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

发表评论