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

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

  • Maven 基础教程(一):基础介绍、开发环境配置
  • Maven 基础教程(二):Maven 的使用
  • Maven 基础教程(三):build、profile
  • Maven 基础教程(四):搭建 Maven 私服 Nexus

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

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

  • 7.搭建 Maven 私服:Nexus
    • 7.1 Nexus 下载安装
    • 7.2 初始设置
    • 7.3 Nexus Repository
    • 7.4 创建 Nexus Repository
      • 7.4.1 创建 Nexus 宿主仓库(hosted)
      • 7.4.2 创建 Nexus 代理仓库(proxy)
      • 7.4.3 创建 Nexus 仓库组(group)
    • 7.5 通过 Nexus 下载 jar 包
    • 7.6 将 jar 包部署到 Nexus
      • 7.6.1 上传到 maven-snapshots
      • 7.6.2 上传到 maven-releases

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 私服仓库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/268986.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据迁移DTS | 云上MySQL 数据库迁移至达梦数据库

引入 云上 MySQL 数据库 —> 向达梦国产化数据库迁移 下载&安装 达梦客户端工具 DM->可参考之前国产化专栏达梦文章 创建模式 在客户端分别依次执行以下命令脚本&#xff08;这里没有通过客户端管理工具去创建达梦数据库的模式&#xff0c;当然也可以通过图形化界…

YOLOv8独家原创改进:特征融合涨点篇 | 广义高效层聚合网络(GELAN) | YOLOv9

💡💡💡本文独家改进:即结合用梯度路径规划(CSPNet)和(ELAN)设计了一种广义的高效层聚合网络(GELAN),高效结合YOLOv8,实现涨点。 将GELAN添加在backbone和head处,提供多个yaml改进方法 💡💡💡在多个私有数据集和公开数据集VisDrone2019、PASCAL VOC实现…

MySQL-----视图

一 视图 ▶ 介绍 视图view是一个虚拟表&#xff0c;非真实存在&#xff0c;其本质是根据SQL语句获取动态的数据集&#xff0c;并为其命名&#xff0c;用户使用时只需使用视图名称即可获取结果集&#xff0c;并可以将其当作表来使用。 数据库中存放了视图的定义&…

格两例12345

osu/Lucky Roll gaming 周末osu有道题&#xff1a;lcg已知低位 def lcg(s, a, b, p):return (a * s b) % pp getPrime(floor(72.7)) a randrange(0, p) b randrange(0, p) seed randrange(0, p) print(f"{p }") print(f"{a }") print(f"{b …

SketchUp Pro 2023:颠覆传统,重塑设计世界mac/win版

SketchUp Pro 2023是一款强大的三维建模软件&#xff0c;专为设计师、建筑师和创意专业人士打造。这款软件以其直观易用的界面和强大的功能而著称&#xff0c;为用户提供了无限的创意空间。 SketchUp Pro 2023 软件获取 SketchUp Pro 2023在用户体验方面进行了全面的优化&…

20240304-2-计算机网络

计算机网络 知识体系 Questions 1.计算机网络分层的优点和缺点 优点 各层之间是独立的&#xff1b;灵活性好&#xff1b;结构上可分割开&#xff1b;易于实现和维护&#xff1b;能促进标准化工作。 缺点&#xff1a; 降低效率&#xff1b;有些功能会在不同的层次中重复出现&…

如何对比 MySQL 主备数据的一致性?

随着业务范围的扩大&#xff0c;很多企业为了保障核心业务的高可用性&#xff0c;选择了 MySQL 主从架构&#xff0c;这一套方案通常具备主备数据同步、数据备份与恢复、读写分离、高可用切换等特性&#xff0c;是一种相当成熟可靠的数据库架构方案。然而这套方案在特定情况下可…

安装 docker 可视化工具 portainer

portainer 官方网站 https://www.portainer.io/ 一、portainer 介绍 Portainer是一款开源的容器管理平台&#xff0c;它提供了一个直观易用的Web界面&#xff0c;帮助用户管理Docker容器集群、镜像、卷等资源。Portainer 支持多种 Docker 环境&#xff0c;包括本地Docker、Sw…

数学建模【多元线性回归模型】

一、多元线性回归模型简介 回归分析是数据分析中最基础也是最重要的分析工具&#xff0c;绝大多数的数据分析问题&#xff0c;都可以使用回归的思想来解决。回归分析的任务就是&#xff0c;通过研究自变量X和因变量Y的相关关系&#xff0c;尝试去解释Y的形成机制&#xff0c;进…

【Boost搜索引擎项目】Day1 项目介绍+去标签和数据清洗框架搭建

&#x1f308;欢迎来到C项目专栏 &#x1f64b;&#x1f3fe;‍♀️作者介绍&#xff1a;前PLA队员 目前是一名普通本科大三的软件工程专业学生 &#x1f30f;IP坐标&#xff1a;湖北武汉 &#x1f349; 目前技术栈&#xff1a;C/C、Linux系统编程、计算机网络、数据结构、Mysq…

毕业论文页眉页脚的设置

目录 一、理解&#xff1a;分页符和分节符的区别 二、页眉设置具体步骤 三、页脚设置具体步骤 一、理解&#xff1a;分页符和分节符的区别 分页符是重新一页开始而已&#xff0c;和页码无关&#xff01; 分节符是从这里开始&#xff0c;是新的小节&#xff0c;页码和页眉都…

前后端依赖下载上传

在某些情况下&#xff0c;可能需要在没有互联网连接的环境中进行构建或部署。通过提前下载所有依赖&#xff0c;你可以将它们保存在本地&#xff0c;然后在没有网络连接时使用&#xff0c;提高构建或部署的效率。 前端下载依赖 脚本getTzgUrl.js const { readFileSync, writ…

【前端寻宝之路】总结学习使用CSS的引入方式

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-BNJBIEvpN0GHNeJ1 {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

死记硬背spring bean 的生命周期

1.bean的生命周期 我们平常经常使用类似于new Object()的方式去创建对象&#xff0c;在这个对象没有任何引用的时候&#xff0c;会被gc给回收掉。而对于spring而言&#xff0c;它本身存在一个Ioc容器&#xff0c;就是用来管理对象的&#xff0c;而对象的生命周期也完全由这个容…

上帝视角看GPU(5):图形流水线里的不可编程单元

【GPU】图形流水线基础【GPU】逻辑上的模块划分【GPU】部署到硬件【GPU】完整的软件栈 前几期我们过了一遍GPU的软硬栈。这次我们将深入GPU图形流水线的一些细节&#xff0c;看看那些不可编程的模块是怎么工作的。 对于GPU的图形流水线来说&#xff0c;最核心最重要的一个组件就…

leetcode第 387 场周赛总结

很久没打周赛了&#xff0c;这周开始恢复 这次周赛&#xff0c;题目比较简单&#xff0c;第三道题有点浪费了时间&#xff0c;思路是对的&#xff0c;但是被我把问题复杂化了。 给你一个下标从 1 开始、包含 不同 整数的数组 nums &#xff0c;数组长度为 n 。 你需要通过 n 次…

【QT 5 +Linux下软件qt软件打包+qt生成软件创建可以安装压缩包+学习他人文章+第三篇:学习打包】

【QT 5 Linux下软件qt软件打包qt生成软件创建可以安装压缩包学习他人文章第三篇&#xff1a;学习打包】 1、前言2、实验环境3、自我学习总结-本篇总结&#xff08;1&#xff09;了解安装包的目录结构&#xff08;2&#xff09;了解要编写文件与编写脚本1. control文件2. postin…

美女街拍3000张高清图

美女街拍3000张高清图&#xff0c;需要的可以直接下载 2.资源下载 ​途径一&#xff1a;点击以下链接直接下载 美女街拍3000张高清图 途径二&#xff1a;直接长按住以下图片识别进去下载即可

北京大学发布,将试错引入大模型代理学习!

引言&#xff1a;探索语言智能的新边界 在人工智能的发展历程中&#xff0c;语言智能始终是一个核心的研究领域。随着大语言模型&#xff08;LLM&#xff09;的兴起&#xff0c;我们对语言智能的理解和应用已经迈入了一个新的阶段。这些模型不仅能够理解和生成自然语言&#x…

UCSF DOCK 分子对接详细案例(01)- rigid, fixed anchor, flexible dock

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、操作环境二、研究背景三、受体-配体结构文件准备3.1准备文件夹DOCK_workdir, 下载晶体结构3.1.1 来自湿实验的受体配体共晶结构&#xff1a;3.1.2 来自深度学习和语言模型推理预测的蛋白结构&a…