【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.mzph.cn/news/720241.shtml

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

相关文章

我的NPI项目之Android 安全系列 -- Keymaster到底是个什么

最近因为一直在调研独立secure element集成的工作&#xff0c;不巧的是目前使用的高通平台只有NFC-eSE的方案。高通目前也并不支持独立的eSE集成&#xff0c;codebase中并无相对应的代码。举个例子&#xff0c;目前使用的STM的一款eSE&#xff0c;但是这款eSE的开发STM还没有完…

HarmonyOS—HAP唯一性校验逻辑

HAP是应用安装的基本单位&#xff0c;在DevEco Studio工程目录中&#xff0c;一个HAP对应一个Module。应用打包时&#xff0c;每个Module生成一个.hap文件。 应用如果包含多个Module&#xff0c;在应用市场上架时&#xff0c;会将多个.hap文件打包成一个.app文件&#xff08;称…

matlab 提取分割位于多边形区域边缘内部或边缘上的点

[in,on] = inpolygon(xq,yq,xv,yv) xv 和 yv 为定义的多边形区域的,如xv = [1 4 4 1 1 ];yv = [1 1 4 4 1 ];注意最后一个数字与第一个重复,保证多边形闭合; xq 和 yq 为待查询的点in:在多边形内部和边缘的点序号on:仅在多边形边缘的点序号 提取分割方法: matrix=[xq yq…

大数据技术学习笔记(五)—— MapReduce(1)

目录 1 MapReduce 概述1.1 MapReduce 定义1.2 MapReduce 优缺点1.3 MapReduce 核心思想1.4 MapReduce 进程1.5 Hadoop 序列化类型1.6 MapReduce 编程规范1.7 WordCount 案例实操1.7.1 案例需求1.7.2 环境准备1.7.3 编写程序1.7.4 测试 2 MapReduce 序列化2.1 序列化概述2.2 自定…

浅析volatile关键字

浅析volatile关键字 文章目录 浅析volatile关键字1. volatile关键字的意义2.volatile应用3. volatile常见问题总结 1. volatile关键字的意义 ​ 被 volatile 修饰的变量&#xff0c;在对其进行读写操作时&#xff0c;会引发一些可观测的副作用。而这些可观测的副作用&#xff…

sql单表运用11.3

一、进入数据库操作界面 1、mysql -u root -p 敲回车 &#xff0c;输入密码 &#xff0c;进入数据库操作界面 2、show databases 查看所有的数据&#xff08;如果没有数据库&#xff1a;创建数据库 create database 库名称&#xff09; 3、use 数据库名 使…

软件工程顶会——ICSE '24 论文清单、摘要

1、A Comprehensive Study of Learning-based Android Malware Detectors under Challenging Environments 近年来&#xff0c;学习型Android恶意软件检测器不断增多。这些检测器可以分为三种类型&#xff1a;基于字符串、基于图像和基于图形。它们大多在理想情况下取得了良好的…

为啥要用C艹不用C?

在很多时候&#xff0c;有人会有这样的疑问 ——为什么要用C&#xff1f;C相对于C优势是什么&#xff1f; 最近两年一直在做Linux应用&#xff0c;能明显的感受到C带来到帮助以及快感 之前&#xff0c;我在文章里面提到环形队列 C语言&#xff0c;环形队列 环形队列到底是怎么回…

NLP_文本数据分析_3(代码示例)

目标 了解文本数据分析的作用.掌握常用的几种文本数据分析方法. 1 文件数据分析介绍 文本数据分析的作用: 文本数据分析能够有效帮助我们理解数据语料, 快速检查出语料可能存在的问题, 并指导之后模型训练过程中一些超参数的选择. 常用的几种文本数据分析方法: 标签数量分布句…

场景问题: VisualVM工具Profiler JDBC不是真实执行的SQL

1. 问题 诡异的问题表象&#xff1a; 前端反馈分页接口的Total字段一直为0 使用Visualvm中的 Profiler 注入到应用后&#xff0c;查看JDBC监控得到了分页接口执行的SQL&#xff0c;复制出来执行是55. 此时还没有注意到 IN 的范围中有一个特别的值 NULL &#x1f928; 2. 排查…

视觉Transformers中的位置嵌入 - 研究与应用指南

视觉 Transformer 中位置嵌入背后的数学和代码简介。 自从 2017 年推出《Attention is All You Need》以来&#xff0c;Transformer 已成为自然语言处理 (NLP) 领域最先进的技术。 2021 年&#xff0c;An Image is Worth 16x16 Words 成功地将 Transformer 应用于计算机视觉任务…

idea中引入新JDK环境

在不同的项目中往往会需要不同的运行环境&#xff0c;那么如何下载一个新的环境并运用到idea中呢&#xff1f; 下面给出的就是oracle官网&#xff0c;以JDK17为例教大家如何下载 Java Archive Downloads - GraalVM for JDK 17https://www.oracle.com/java/technologies/javase…

Python数据可视化库之bashplotlib使用详解

概要 在数据可视化领域,Python拥有许多优秀的库,如Matplotlib、Seaborn等,它们可以创建漂亮而复杂的图形。但是,有时候我们可能需要在终端中绘制简单的图形,这时候Bashplotlib就派上了用场。Bashplotlib是一个Python库,可以在终端中绘制基本的图形,如条形图、散点图等。…

YOLOV9训练集制作+Train+Val记录

一、YOLO数据集格式分布 在YOLO中&#xff0c;数据集的分布如图&#xff0c;在dataset文件夹下有imags&#xff08;图片&#xff09;和labels&#xff08;标签&#xff09;。在images和labels文件夹下又分别存放三个文件夹&#xff0c;分别对应测试集、训练集、验证集&#xff…

使用postman测试若依其他业务接口API—3

请求方式 如上&#xff0c;使用Get请求来获取练习题库中的所有习题数据。 请求地址 在请求路径栏输入请求地址&#xff0c;以下图为例&#xff1a; 参数体与鉴权 在Parms键入所需参数&#xff0c;其中key为键,value为键的值&#xff1a;如下图所示&#xff1a; 认证成功与失…

持续集成(CICD)- gogs仓库的部署和使用

文章目录 一、gogs的介绍二、部署gog仓库三、首次启动gogs四、登录五、创建一个非空仓库六、从仓库拉取代码到本地七、把本地编辑的代码上传到仓库 一、gogs的介绍 Gogs作为一个轻量级、易于部署和使用的自托管Git服务&#xff0c;为小型团队和个人开发者提供了一个简单而强大…

【AIGC】如何提高Prompt准确度

前言 随着人工智能的迅猛进展&#xff0c;AIGC&#xff08;通用人工智能聊天工具&#xff09;已成为多个行业中不可或缺的自然语言处理技术。Prompt作为AIGC系统的一项关键功能&#xff0c;在工具的有效运作中发挥了举足轻重的作用。本篇文章将深入探讨Prompt与AIGC之间的紧密…

python笔记_程序流程控制2

C&#xff0c;循环控制 1&#xff0c;for循环 功能&#xff1a;让代码循环运行 语法&#xff1a; for <变量> in <范围、序列>&#xff1a; <循环操作语句> 例 nums &#xff08;1,2,3,4&#xff09; <class list> for i in nums&#xff1a; print&…

Java中文件的相关知识及文件IO操作

在我们日常生活中&#xff0c;会把许多东西都称之为文件。比如&#xff0c;一份纸质报告&#xff0c;或u盘中的一些文档&#xff0c;都会把它们称为文件。那么&#xff0c;这里说的文件是以操作系统的角度出发的。在操作系统中&#xff0c;会把许多硬件设备和软件资源都抽象成“…

机器学习:主成分分析笔记

主成分分析&#xff08;Principal Component Analysis&#xff0c;PCA&#xff09;是一种无监督的机器学习算法&#xff0c;通常用于高维数据的降维、提取主要特征、数据降噪和可视化。PCA的基本思想是将原始数据的多个变量转换为少数几个相互独立的变量&#xff08;即主成分&a…