【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.mfbz.cn/a/428461.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

某大型制造企业数字化转型规划方案(附下载)

目录 一、项目背景和目标 二、业务现状 1. 总体应用现状 2. 各模块业务问题 2.1 设计 2.2 仿真 2.3 制造 2.4 服务 2.5 管理 三、业务需求及预期效果 1. 总体业务需求 2. 各模块业务需求 2.1 设计 2.2 仿真 2.3 制造 2.4 服务 2.5 管理 四、…

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

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

管家婆订货易在线商城 VshopProcess 任意文件上传漏洞复现

0x01 产品简介 管家婆订货易,帮助传统企业构建专属的订货平台,PC+微信+APP+小程序+h5商城5网合一,无缝对接线下的管家婆ERP系统,让用户订货更高效。支持业务员代客下单,支持多级推客分销,以客带客,拓展渠道。让企业的生意更轻松。 0x02 漏洞概述 管家婆订货易在线商城…

5G网络架构与组网部署01--5G网络架构的演进趋势

目录 1. 5G网络架构的演进趋势 1.1 5G移动通信系统整体架构 1.2 4G移动通信系统整体架构 1.3 4G与5G移动通信系统整体架构对比 1.4 核心网架构演进 1.5 无线接入网演进 1. 整体架构组成&#xff1a;接入网&#xff0c;核心网 2. 5G网络接入网和核心网对应的网元&#xff…

如何本地安装gemma

目录 通过ollama开源软件来一键安装目前主流的大模型&#xff0c;支持的开源模型包括以下内容&#xff1a; https://github.com/ollama/ollama

安卓驱动工程师 3年成长之路

大家好&#xff0c;我是杰哥 安卓驱动工程师 3年成长之路 最近和我的一个老朋友联系了一下&#xff0c;聊天中&#xff0c;透露了他目前已经达到30w的年薪 因为我自身是嵌入式的线下老师&#xff0c;所以就聊了他3年来的成长之路 正文 刚毕业不到1w的混子屌丝 是怎么3年后…

Java面试题总结8:springboot

Spring Boot自动配置原理 importConfigurationSpring spi 自动配置类由各个starter提供&#xff0c;使用ConfigurationBean定义配置类&#xff0c;放到META-INF/spring.factories下 使用Spring spi扫描META-INF/Spring.factories下的配置类 如何理解Spring Boot中Starter …

前缀和/前缀和+后缀和?!!:瞬秒Leetcode 742.寻找数组的中心下标

题目 给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端&#xff0c;那么左侧数之和视为 0 &#xff0c;因为在下标的左侧不存在元素。…

Figma 最新版下载:无需激活码,轻松安装!

从事设计工作&#xff0c;怎么能没有设计工具呢&#xff1f;我相信许多设计师也必须使用Figma这样的软件&#xff0c;真的可以让我们的设计工作更有效率&#xff0c;但我相信你也发现Figma属于外国软件&#xff0c;自然语言也是英语&#xff0c;直到现在没有中文版本&#xff0…

Java基础 - 6 - 面向对象(二)

Java基础 - 6 - 面向对象&#xff08;一&#xff09;-CSDN博客 二. 面向对象高级 2.1 static static叫做静态&#xff0c;可以修饰成员变量、成员方法 2.1.1 static修饰成员变量 成员变量按照有无static修饰&#xff0c;分为两种&#xff1a;类变量、实例变量&#xff08;对象…

初始计算机组成原理

1.初始计算机组成原理 本人相关文章&#xff1a;Linux之计算机概论 声明&#xff1a;大部分图片均来自网络&#xff0c;侵删 一个完整的计算机系统包括硬件子系统和软件子系统两大部分。 组成一台计算机的物理设备的总称叫做计算机硬件子系统,是看得见摸得着的实体,是计算机工…

tomcat 单机反向代理的搭建

一 tomcat nginx 动静分离 &#xff08;一&#xff09;常见四种情况 1&#xff0c;standaione 此模式一般在测试环境 tomcat抗高并发 差 2&#xff0c;单机反向代理 nginx 做代理 和静态资源处理 把动态给tomcat AJP 是httpd和tomcat 的特殊协议 因为这同一家公司开发…

spring boot概述

SpringBoot是由Pivotal团队提供的全新框架&#xff0c;其设计目的是用来简化新Spring应用的初始搭建以及开发过程。 该框架使用了特定的方式来进行配置&#xff0c;从而使开发人员不再需要定义样板化的配置。 通过这种方式&#xff0c;SpringBoot致力于在蓬勃发展的快速应用开发…

【Python】进阶学习:pandas--read_excel()函数的基本使用

【Python】进阶学习&#xff1a;pandas–read_excel()函数的基本使用 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希…

C++ 模拟OJ

目录 1、1576. 替换所有的问号 2、 495. 提莫攻击 3、6. Z 字形变换 4、38. 外观数列 5、 1419. 数青蛙 1、1576. 替换所有的问号 思路&#xff1a;分情况讨论 ?zs&#xff1a;左边没有元素&#xff0c;则仅需保证替换元素与右侧不相等&#xff1b;z?s&#xff1a;左右都…

2024年【起重机械指挥】考试及起重机械指挥考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 起重机械指挥考试是安全生产模拟考试一点通总题库中生成的一套起重机械指挥考试报名&#xff0c;安全生产模拟考试一点通上起重机械指挥作业手机同步练习。2024年【起重机械指挥】考试及起重机械指挥考试报名 1、【多…

行列式错题本

《1800》 1 阶数和转置 A是三阶,B是4阶,还有2这个系数 2 怎么啥也不会呀,委屈 行列式的拆分+提取系数 3

【NR 定位】3GPP NR Positioning 5G定位标准解读(四)

目录 前言 6 Signalling protocols and interfaces 6.1 支持定位操作的网络接口 6.1.1 通用LCS控制平面架构 6.1.2 NR-Uu接口 6.1.3 LTE-Uu接口 6.1.4 NG-C接口 6.1.5 NL1接口 6.1.6 F1接口 6.1.7 NR PC5接口 6.2 终端协议 6.2.1 LTE定位协议&#xff08;LPP&#x…

机器学习模型总结

多元线性回归&#xff08;linear regression&#xff09; 自变量&#xff1a;连续型数据&#xff0c;因变量&#xff1a;连续型数据 选自&#xff1a;周志华老师《机器学习》P53-55 思想&#xff1a;残差平方和达到最小时的关系式子即为所求&#xff0c;残差平方和&#xff1a…

考研英语语法(句子成分)

目录 1.主句的成分&#xff1a; 2.化妆后句子的成分&#xff1a; 3.句子的基本结构&#xff1a; 4.句子成分表 5.复杂句型总结 1.并列句&#xff08;是由并列连词连接两个或两个以上的句子&#xff0c;用逗号隔开&#xff09; 2.名词性从句&#xff08;名词在句中充当成…
最新文章