【Maven】Maven 基础教程(四):搭建 Maven 私服 Nexus

本文详细介绍了如何从基础开始学习Maven,包括环境配置、基本使用、搭建Maven私服Nexus,以及如何配置Nexus仓库(hosted、proxy、group)、下载和部署jar包。
摘要由CSDN通过智能技术生成

Maven 基础教程》系列,包含以下 5 篇文章:

😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖💖💖 将激励 🔥 博主输出更多优质内容!!!

7.搭建 Maven 私服:Nexus

很多公司都是搭建自己的 Maven 私有仓库,主要用于项目的公共模块的迭代更新等。

在这里插入图片描述

7.1 Nexus 下载安装

🚀 下载地址:https://download.sonatype.com/nexus/3/latest-unix.tar.gz

然后将下载的文件上传到 Linux 系统,解压后即可使用,不需要安装。但是需要注意:必须提前安装 JDK。(我这里放在 /root/nexus 下)

tar -zxvf nexus-3.25.1-04-unix.tar.gz

解压后如下:

在这里插入图片描述
通过以下命令启动:

# 启动
/root/nexus/nexus-3.25.1-04/bin/nexus start
# 查看状态
/root/nexus/nexus-3.25.1-04/bin/nexus status

在这里插入图片描述
如果显示 nexus is stopped. 则说明启动失败,通过命令查看端口占用情况。

netstart -luntp|grep java

在这里插入图片描述

可以看到 8081 8081 8081 端口被占用,而 nexus 的默认端口为 8081 8081 8081,我们可以修改其默认端口号,其配置文件在 etc 目录下的 nexus-default.properties,如下:

在这里插入图片描述
打开后修改为自己需要设置的端口,注意开启对外防火墙:

在这里插入图片描述
⭐ 提示:

  • bin 目录下 nexus.vmoptions 文件,可调整内存参数,防止占用内存太大。
  • etc 目录下 nexus-default.properties 文件可配置默认端口和 Host 及访问根目录。

然后访问 http://[Linux 服务器地址]:8081/ 进入首页。

在这里插入图片描述

7.2 初始设置

点击右上角的登录:

在这里插入图片描述
这里参考提示:

  • 用户名:admin
  • 密码:查看 /opt/sonatype-work/nexus3/admin.password 文件

然后输入密码进行下一步:

在这里插入图片描述

匿名登录,启用还是禁用?由于启用匿名登录后,后续操作比较简单,这里我们演示禁用匿名登录的操作方式:

在这里插入图片描述
除了默认账号 adminadmin 具有全部权限,还有 anonymousanonymous 作为匿名用户,只具有查看权限,但可以查看仓库并下载依赖。

完成:
在这里插入图片描述

7.3 Nexus Repository

Nexus 默认创建了几个仓库,如下:

在这里插入图片描述
其中仓库类型 Type 为:

  • proxy:某个远程仓库的代理。
  • group:通过 Nexus 获取的第三方 jar 包。
  • hosted:本团队其他开发人员部署到 Nexus 的 jar 包。

仓库名称说明:

  • maven-central:Nexus 对 Maven 中央仓库的代理。
  • maven-public:Nexus 默认创建,供开发人员下载使用的组仓库。
  • maven-releasse:Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库,要求 releasse 版本。
  • maven-snapshots:Nexus 默认创建,供开发人员部署自己 jar 包的宿主仓库,要求 snapshots 版本。

其中 maven-public 相当于仓库总和,默认把其他 3 个仓库加进来一起对外提供服务了,另外,如果有自己建的仓库,也要加进该仓库才有用。

初始状态下,这几个仓库都没有内容:

在这里插入图片描述

7.4 创建 Nexus Repository

除了自带的仓库,有时候我们需要单独创建自己的仓库,按照默认创建的仓库类型来创建我们自己的仓库。

7.4.1 创建 Nexus 宿主仓库(hosted)

点击左边导航栏中的 Repositories,如下图:

在这里插入图片描述
然后创建仓库,如下:

在这里插入图片描述
同理创建 releases 仓库,然后查看列表:

在这里插入图片描述
宿主仓库配置如下:

  • Repository ID:仓库 ID。
  • Repository Name:仓库名称。
  • Repository Type:仓库的类型,如 hostedproxy 等等。
  • Provider:用来确定仓库的格式,一般默认选择 Maven2。
  • Repository Policy:仓库的策略。
  • Default Local Storage Location:仓库默认存储目录,例如 D:\nexus-2.14.20-02-bundle\sonatype-work\nexus\indexer\bianchengbang_Snapshot_hosted_ctx
  • Override Local Storage Location:自定义仓库存储目录。
  • Deployment Policy:仓库的部署策略。
  • Allow File Browsing:用来控制是否允许浏览仓库内容,一般选择 true
  • Include in Search:用来控制该仓库是否创建索引并提供搜索功能。
  • Publish URL:用来控制是否通过 URL 提供服务。
  • Not Found Cache TTL:缓存某构件不存在信息的时间,默认取值为 1440 1440 1440,表示若某一个构件在仓库中没有找到,在 1440 1440 1440 分钟内再次接收到该构件的请求,则直接返回不存在信息,不会再次查找。

7.4.2 创建 Nexus 代理仓库(proxy)

然后建一个代理仓库,用来下载和缓存中央仓库(或者阿里云仓库)的构件,这里选择 proxy

在这里插入图片描述
然后创建:

在这里插入图片描述
代理仓库配置中,仓库 ID、仓库名称、Provider、Policy 以及 Default Local Storage Location 等配置的含义与宿主仓库相同,不再赘述。需要注意的是,代理仓库的 Repository Type 的取值是 proxy

代理仓库配置如下表:

  • Remote Storage Location:远程仓库或中央仓库的地址,它是 Nexus 代理仓库最重要得配置,必须输入有效值,通常取值为 https://repo1.maven.org/maven2/
  • Download Remote Indexes:是否下载远程仓库的索引。
  • Auto Blocking Enabled:是否启用自动阻止,即当 Nexus 无法连接中央仓库或远程仓库时,是否一直等待。取值为 true 表示不再等待,直接通知客户端无法连接,并返回。
  • File Content Validation:是否启用文件内容校验。
  • Checksum Policy:配置校验和出错时的策略,用户可以选择忽略、警告、记录警告信息或拒绝下载等多种策略。
  • Artifact Max Age:构件缓存的最长时间,对于发布版本仓库来说,默认值为 − 1 -1 1,表示构件缓存后,就一直保存着,不再重新下载。对于快照版本仓库来说,默认值为 1440 1440 1440 分钟,表示每隔一天重新缓存一次代理的构件。
  • Metadata Max Age:仓库元数据缓存的最长时间。
  • Item Max Age:项目缓存的最长时间。

7.4.3 创建 Nexus 仓库组(group)

下面我们将创建一个仓库组,并将刚刚创建的 3 个仓库都聚合起来,这里选择 group,如下:

在这里插入图片描述
查看 Nexus 仓库列表,可以看到创建的仓库组已经创建完成,如下图:

在这里插入图片描述

7.5 通过 Nexus 下载 jar 包

由于初始状态下都没有内容,所以我们需要进行配置,我们先在本地的 Maven 的配置文件中新建一个空的本地仓库作为测试。

在这里插入图片描述
然后,把我们原来配置阿里云仓库地址的 mirror 标签改成下面这样:

<mirror>
  <id>maven-public</id>
  <mirrorOf>central</mirrorOf>
  <name>Maven public</name>
  <url>http://106.15.15.213:8090/repository/maven-public/</url>  
</mirror>

这里的 url 标签是这么来的:

在这里插入图片描述
把上图中看到的地址复制出来即可。如果我们在前面允许了匿名访问,到这里就够了。但如果我们禁用了匿名访问,那么接下来我们还要继续配置 settings.xml

<server>
  <id>maven-public</id>
  <username>admin</username>
  <password>@123456</password>
</server>

注意:server 标签内的 id 标签值必须和 mirror 标签中的 id 值一样。

然后找一个用到框架的 Maven 工程,编译 compile,下载过程日志:

在这里插入图片描述
下载后,Nexus 服务器上就有了 jar 包:

在这里插入图片描述

7.6 将 jar 包部署到 Nexus

这一步的作用是将通用的模块打成 jar 包,发布到 Nexus 私服,让其他的项目来引用,以更简洁高效的方式来实现复用和管理。

需要配置 server

<server>
  <id>maven-public</id>
  <username>admin</username>
  <password>@123456</password>
</server>
<server>
  <id>maven-releases</id>
  <username>admin</username>
  <password>@123456</password>
</server>
<server>
  <id>maven-snapshots</id>
  <username>admin</username>
  <password>@123456</password>
</server>

然后在我们需要上传的 Maven 项目中的 pom.xml 添加如下配置:

<!-- 这里的 id 要和上面的 server 的 id 保持一致,name 随意写-->
<distributionManagement>
    <repository>
        <id>maven-releases</id>
        <name>Releases Repository</name>
        <url>http://106.15.15.213:8090/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <id>maven-snapshots</id>
        <name>Snapshot Repository</name>
        <url>http://106.15.15.213:8090/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

7.6.1 上传到 maven-snapshots

执行命令 mvn deploy 将当前 SNAPSHOT(快照版)上传到私服 maven-snapshots

在这里插入图片描述

7.6.2 上传到 maven-releases

修改项目的版本,如下:

在这里插入图片描述
执行命令 mvn deploy

在这里插入图片描述
查看:
在这里插入图片描述

  • package 命令完成了项目编译、单元测试、打包功能。
  • install 命令完成了项目编译、单元测试、打包功能,同时把打好的可执行 jar 包(war 包或其它形式的包)布署到本地 Maven 仓库。
  • deploy 命令完成了项目编译、单元测试、打包功能,同时把打好的可执行 jar 包(war 包或其它形式的包)布署到本地 Maven 仓库和远程 Maven 私服仓库。
  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
搭建Maven私服可以使用Sonatype Nexus,它是一个功能强大的仓库管理器,可以帮助我们创建和管理Maven私服。下面是基于Nexus搭建Maven私服的详细步骤: 1. 准备环境:首先,确保你已经安装了Java环境,并且可以正常运行MavenNexus软件。 2. 下载和解压缩Nexus软件:从Sonatype官方网站下载最新版本的Nexus软件,并解压缩到合适的目录中。 3. 启动Nexus:使用命令行窗口进入Nexus软件的目录,然后执行 `./bin/nexus start` 命令来启动Nexus服务器。 4. 访问Nexus控制台:在浏览器中输入 `http://localhost:8081` 访问Nexus控制台,默认用户名和密码都是 `admin`,登录成功后,可以看到Nexus的管理界面。 5. 创建Maven仓库:在Nexus控制台中,点击左侧菜单的 `Repositories`,然后点击 `Create repository` 来创建新的Maven仓库。根据需要选择 `Hosted repository` 或者 `Proxy repository`,然后填写相应的配置信息,如仓库名称、URL、布局等。 6. 配置Maven项目:在你的Maven项目的pom.xml文件中添加Nexus私服的配置信息,包括ID、URL等,用来指定将Maven构建输出部署到Nexus仓库中。 7. 部署和使用:使用 `mvn deploy` 命令将项目打包并部署到Nexus私服中,当其他开发人员或者CI/CD服务器需要下载依赖时,只需要修改项目的settings.xml文件,指定Nexus私服的URL和凭据即可。 8. 其他设置:你还可以在Nexus控制台里进行其他设置,比如用户管理、访问控制、仓库代理等。 总结一下,使用Nexus搭建Maven私服非常简单,只需要几个基本的步骤即可完成。通过搭建Maven私服,我们可以有效地管理和共享项目的依赖包,提升团队的开发效率和项目的可维护性。这对于生产环境中的项目非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

G皮T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值