【Maven】008-Maven 私服搭建与使用

【Maven】008-Maven 私服搭建与使用

文章目录

  • 【Maven】008-Maven 私服搭建与使用
  • 一、概述
    • 1、简介
    • 2、建立私服后依赖查找和下载逻辑
      • 第一步:请求本地仓库
      • 第二步:请求 Maven 私服
      • 第三步:请求外部远程仓库(远程中央仓库等)
      • 参考图
    • 3、Maven 私服的优势
    • 4、Maven 私服常用的产品
  • 二、Nexus 下载、安装、初始设置
    • 1、下载
      • 地址
      • 目标
    • 2、安装
      • 第一步:解压到一个目录
      • 第二步:启动
      • 第三步:访问 `http://localhost:8081/`
    • 3、初始设置
      • 登录
      • 根据提示设置新密码
      • 禁用匿名登录
      • 初始化完成后
  • 三、Nexus 上的仓库
    • 1、仓库
    • 2、仓库类型&说明
    • 3、仓库名称&说明
    • 4、初始状态仓库内为空
  • 四、通过 Nexus 下载 jar 包
    • 1、将中央仓库地址设置为阿里云镜像地址
      • 第一步:选择要修改的仓库
      • 第二步:修改地址为阿里云镜像地址
      • 第三步:保存配置
    • 2、将本机 Maven 配置的阿里云镜像地址改成自己的私服地址
      • 第一步:拷贝自己的私服仓库地址
      • 第二步:修改本机 Maven 配置的阿里云镜像地址
      • 第三步:添加访问用户名密码
    • 3、通过 Nexus 下载 jar 包
      • 第一步:修改本机 Maven 仓库地址
      • 第二步:在 Maven 工程下执行 Maven 命令
      • 第三步:查看私服仓库
  • 五、将 jar 包部署到 Nexus
    • 1、Maven 工程中配置
    • 2、执行部署命令
      • 执行日志
      • 私服
  • 六、引用别人部署的 jar 包
    • 1、Maven 工程中配置
    • 2、打包日志

一、概述

1、简介

Maven私服(Repository Manager)是一个用于管理和分发构建制品(如JAR、WAR、POM文件等)的服务器。它允许团队在本地搭建一个中央存储库,用于保存和分享项目构建所需的依赖项。一些常见的Maven私服产品包括 Nexus、Artifactory 和 Apache Archiva 。

2、建立私服后依赖查找和下载逻辑

第一步:请求本地仓库

  • 当用户需要某个构件时,首先会检查本地仓库是否已经存在所需构件。
  • 如果本地仓库中已经有所需构件,系统将直接从本地仓库获取,无需进行远程请求。

第二步:请求 Maven 私服

  • 如果本地仓库中不存在所需构件,用户的请求将转向 Maven 私服。
  • Maven 私服会检查自身的仓库,如果存在所需构件,将其下载到本地仓库,并返回给用户。

第三步:请求外部远程仓库(远程中央仓库等)

  • 如果 Maven 私服也没有所需构件,系统将尝试从外部的远程仓库(通常是中央仓库)中获取。
  • 如果外部远程仓库存在所需构件,Maven 私服会将该构件下载并缓存到自身的仓库中,然后将构件返回给用户。
  • 如果外部远程仓库中也不存在所需构件,Maven 将报错,指示找不到所需的依赖项。

参考图

image-20231021164631791

3、Maven 私服的优势

  1. 加速构建过程: Maven 私服允许团队在本地搭建一个中央存储库,使得构建时可以优先从局域网内的私服获取依赖项,从而减少对外部远程仓库的依赖,加速构建过程。
  2. 降低对外部网络的依赖性: 私服允许团队在没有互联网连接或网络较差的情况下进行构建。依赖项的本地缓存和私服的存在减少了对外部网络的依赖性,提高了项目的可靠性。
  3. 统一依赖管理: 通过私服,团队可以统一管理和控制项目所需的依赖项版本,确保整个团队使用相同的构建制品,降低了版本冲突和不一致性的可能性。
  4. 安全性: 私服可以提供访问控制和安全认证机制,限制对仓库的访问,确保只有授权的人员能够发布和获取构建制品。这有助于保护项目的代码和依赖项的安全性。
  5. 本地镜像和缓存: 私服可以缓存外部远程仓库中的构建制品,降低了从外部仓库获取依赖项的延迟。此外,私服还可以配置为本地镜像,提供更快速的下载。
  6. 离线部署: Maven 私服支持离线部署,使得在没有互联网连接的环境中也能够构建和部署项目,适用于一些安全要求较高或隔离网络的场景。

4、Maven 私服常用的产品

  1. Nexus(当前最流行、使用最广泛):
    • Nexus 是 Sonatype 公司推出的一款流行的 Maven 私服产品。
    • 提供强大的仓库管理和安全性功能。
    • 支持多种仓库格式,包括Maven、npm、Docker等。
  2. Artifactory:
    • Artifactory是JFrog公司开发的另一款领先的构建制品仓库管理工具。
    • 支持各种包括 Maven、Gradle、npm 等的构建工具。
    • 具有高度可伸缩性和灵活的部署选项。
  3. Apache Archiva:
    • Apache Archiva 是由 Apache 软件基金会提供的开源 Maven 私服工具。
    • 提供基本的仓库管理功能,适用于小型项目或对简单配置有需求的团队。

二、Nexus 下载、安装、初始设置

1、下载

地址

https://help.sonatype.com/repomanager3/product-information/download

目标

image-20240114091800081

2、安装

第一步:解压到一个目录

image-20240114093016614

第二步:启动

使用管理员身份打开 CMD ,切换到 bin 目录。

命令:

  • 安装:nexus.exe /install bm-maven
  • 启动:nexus.exe /start bm-maven
  • 停止:nexus.exe /stop bm-maven
  • 卸载:nexus.exe /uninstall bm-maven

image-20240114094115157

第三步:访问 http://localhost:8081/

image-20240114094443971

3、初始设置

登录

用户名:admin

密码:(在 Nexus\sonatype-work\nexus3\admin.password )

image-20240114094610809

根据提示设置新密码

image-20240114094842314

禁用匿名登录

image-20240114094937996

初始化完成后

image-20240114095117223

三、Nexus 上的仓库

1、仓库

image-20240114095359248

2、仓库类型&说明

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

3、仓库名称&说明

仓库名称说明
maven-centralNexus 对 Maven 中央仓库的代理
maven-publicNexus 默认创建,供开发人员下载使用的组仓库
maven-releasesNexus 默认创建,供开发人员部署自己 jar 包的宿主仓库 要求 releases 版本
maven-snapshotsNexus 默认创建,供开发人员部署自己 jar 包的宿主仓库 要求 snapshots 版本

4、初始状态仓库内为空

image-20240114095559491

四、通过 Nexus 下载 jar 包

1、将中央仓库地址设置为阿里云镜像地址

为了加快国内下载速度!

第一步:选择要修改的仓库

image-20240114095957773

第二步:修改地址为阿里云镜像地址

http://maven.aliyun.com/nexus/content/groups/public/

image-20240114100154731

第三步:保存配置

image-20240114100248443

2、将本机 Maven 配置的阿里云镜像地址改成自己的私服地址

第一步:拷贝自己的私服仓库地址

image-20240114100726978

第二步:修改本机 Maven 配置的阿里云镜像地址

image-20240114101058232

第三步:添加访问用户名密码

我们设置了禁止匿名访问!

这里需要格外注意:server 标签内的 id 标签值必须和 mirror 标签中的 id 值一样。

image-20240114132247729

3、通过 Nexus 下载 jar 包

第一步:修改本机 Maven 仓库地址

因为原本的仓库里面可能已经有很多内容了,为了直观,新建一个本地空仓库(一个空文件夹),让 Maven 直接向私服获取依赖!

image-20240114101533142

第二步:在 Maven 工程下执行 Maven 命令

mvn clean compile

部分下载过程日志:

......
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/org/codehaus/plexus/plexus-container-default/1.5.5/plexus-container-default-1.5.5.jar (217 kB at 42 kB/s)
Downloading from zibo-nexus-maven: http://localhost:8081/repository/maven-central/junit/junit/3.8.2/junit-3.8.2.jar
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/log4j/log4j/1.2.12/log4j-1.2.12.jar (358 kB at 63 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/commons-logging/commons-logging-api/1.1/commons-logging-api-1.1.jar (45 kB at 7.9 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/org/apache/xbean/xbean-reflect/3.4/xbean-reflect-3.4.jar (134 kB at 23 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/junit/junit/3.8.2/junit-3.8.2.jar (121 kB at 21 kB/s)
Downloaded from zibo-nexus-maven: http://localhost:8081/repository/maven-central/com/google/collections/google-collections/1.0/google-collections-1.0.jar (640 kB at 89 kB/s)
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to D:\MyFile\IDEAProjects\mvn-demo\demo1\target\classes
[INFO]
[INFO] ---------------------------< com.zibo:demo2 >---------------------------
[INFO] Building demo2 1.0-SNAPSHOT                                        [3/3]
[INFO]   from demo2\pom.xml
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ demo2 ---
[INFO] Deleting D:\MyFile\IDEAProjects\mvn-demo\demo2\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ demo2 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ demo2 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to D:\MyFile\IDEAProjects\mvn-demo\demo2\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for mvn-demo 1.0-SNAPSHOT:
[INFO]
[INFO] mvn-demo ........................................... SUCCESS [  8.613 s]
[INFO] demo1 .............................................. SUCCESS [01:22 min]
[INFO] demo2 .............................................. SUCCESS [  0.079 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:31 min
[INFO] Finished at: 2024-01-14T13:26:44+08:00
[INFO] ------------------------------------------------------------------------

第三步:查看私服仓库

image-20240114132842488

五、将 jar 包部署到 Nexus

如出现问题,请调整下面配置。

1、Maven 工程中配置

注意:这里 repository 和 snapshotRepository 的 id 标签必须和 settings.xml 中指定的 mirror 标签的 id 属性一致。

<distributionManagement><!-- 部署正式版本(Release):mvn clean deploy --><repository><id>zibo-nexus-maven</id><name>zibo nexus maven releases</name><url>http://localhost:8081/repository/maven-releases/</url></repository><!-- 部署快照版本(Snapshot):mvn clean deploy -DrepositoryId=zibo-nexus-maven --><snapshotRepository><id>zibo-nexus-maven</id><name>zibo nexus maven</name><url>http://localhost:8081/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement>

2、执行部署命令

mvn deploy

执行日志

image-20240114134727474

私服

image-20240114134906341

六、引用别人部署的 jar 包

1、Maven 工程中配置

<dependencies><dependency><groupId>com.zibo</groupId><artifactId>demo1</artifactId><version>1.0.0</version></dependency>
</dependencies><repositories><repository><id>zibo-nexus-maven</id><name>zibo nexus maven</name><url>http://localhost:8081/repository/maven-releases/</url><releases><enabled>true</enabled></releases></repository>
</repositories>

2、打包日志

image-20240114140455255

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

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

相关文章

动态路由协议

一、动态路由协议 动态路由协议&#xff0c;用在多个 Router 之间定期的、自动的、互相交换 Routes&#xff08;路由信息&#xff0c;包含了网段信息、可达性信息、路径信息等&#xff09;&#xff0c;动态生成 Routing Table Entries&#xff0c;并最终达到全网的路由收敛&am…

近4w字吐血整理!只要你认真看完【C++编程核心知识】分分钟吊打面试官(包含:内存、函数、引用、类与对象、文件操作)

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;C从基础到进阶 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于C的优质内容&#xff01;&#x1f3c6;&#x1f3c6; C核心编程&#x1f30f;1 内存分区模型&#x1f384…

力扣hot100 颜色分类 双指针 滚动赋值

Problem: 75. 颜色分类 文章目录 思路解题方法复杂度Code&#x1f496; 超简洁版 思路 解题方法 描述你的解题方法 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution { public void sortColors(int[] nums){int n nums.length…

Relation-Aware Graph Transformer for SQL-to-Text Generation

Relation-Aware Graph Transformer for SQL-to-Text Generation Abstract SQL2Text 是一项将 SQL 查询映射到相应的自然语言问题的任务。之前的工作将 SQL 表示为稀疏图&#xff0c;并利用 graph-to-sequence 模型来生成问题&#xff0c;其中每个节点只能与 k 跳节点通信。由…

Qt超简单实现贪吃蛇

文章目录 常量Snake类GameController类GUI显示游戏简图 为了能够最简单地完成程序&#xff0c;所以没有用类的继承等知识。感兴趣的朋友可以改写一下。 常量 const int FILE_SIZE 30; //地图方格大小 const int FPS 5000 / 33; //游戏运行帧率 enum Item{empty, wall, food…

Netty通信中的粘包半包问题(三)

之前我们介绍了用特殊分隔符来分割每个报文&#xff0c;但是如果传输的数据中恰好有个特殊分隔符&#xff0c;它将会被拆分成多个&#xff0c;于是&#xff0c;为了进一步避免这个问题&#xff0c;还有一种解决方案是在两端的channelPipeline中用一个固定长度来区分&#xff0c…

K8s(一)Pod资源——Pod介绍、创建Pod、Pod简单资源配额

目录 Pod概述 pod网络 pod存储 pod和容器对比 创建pod的方式 pod运行方式分类 Pod的创建 Pod的创建过程 通过kubectl run来创建pod 通过yaml文件创建&#xff0c;yaml文件简单写法 Pod简单操作 Pod的标签labels Pod的资源配额resource 测试 Pod概述 Kubernetes …

贪心算法-活动安排-最详细注释解析

贪心算法-活动安排-最详细注释解析 题目&#xff1a; 学校在最近几天有n个活动&#xff0c;这些活动都需要使用学校的大礼堂&#xff0c;在同一时间&#xff0c;礼堂只能被一个活动使用。由于有些活动时间上有冲突&#xff0c;学校办公室人员只好让一些活动放弃使用礼堂而使用…

Arm Generic Interrupt Controller v3 and v4(GICv3v4)学习(一)

提示 该博客主要为个人学习&#xff0c;通过阅读官网手册整理而来&#xff08;个人觉得阅读官网的英文文档非常有助于理解各个IP特性&#xff09;。若有不对之处请参考参考文档&#xff0c;以官网参考文档为准。 Arm Generic Interrupt Controller v3 and v4学习一共分为三章&…

Revealing the Dark Secrets of MIM

论文名称&#xff1a; Revealing the Dark Secrets of Masked Image Modeling 发表时间&#xff1a;CVPR2022 作者及组织&#xff1a;Zhenda Xie, Zigang Geng, Hu Han等&#xff0c;来自清华&#xff0c;中科院&#xff0c;微软亚洲研究院。 前言 本文尝试探讨MIM为何有效的原…

JavaScript 学习笔记(Day5)

「写在前面」 本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. JavaScript 学习笔记&#xff08;Day1&#xff09; 2. JavaSc…

数据结构奇妙旅程之二叉树初阶

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

IDEA无法解析jdk自带的类的解决办法

1.问题 IDEA在有些时候&#xff0c;会出现这个错误&#xff0c;就是jdk自带的java类找不到而报错。 例如下面的就是Object找不到&#xff0c;我们知道jdk自带的类是不用import包的&#xff0c;这里报错了&#xff0c;IDEA会提示你去导入类&#xff0c;其实这个提示也不是真正…

Ubuntu 22.04 基础环境搭建

这是Ubuntu软件安装系列的第一篇&#xff0c;我们来聊聊基础环境搭建。 这个专栏主要讲一些常见服务端软件的安装和配置&#xff0c;当然也包括对软件架构和作用的分析&#xff0c;以及使用的场景的介绍。 注意我们这里使用的Ubuntu的版本是22.04&#xff0c;基本上大厂的云服…

CentOS安装maxwell

CentOs安装maxwell 一、简介二、准备工作三、安装1、下载安装包2、解压3、编写配置文件4、启动maxwell5、验证6、停止maxwell 四、说明1、更新数据2、插入数据3、删除数据 五、遇到问题 一、简介 maxwell是由美国Zendesk公司开源&#xff0c;它通过读取mysql的binlog日志&#…

vscode mysql cmake windows 常见问题和推荐文章

1.在windows中安装mingw64和cmake&#xff08;可查一下网上的安装教程&#xff09;&#xff0c;配置环境变量 2.在vscode中用CMake构建项目的时候&#xff0c;可能会出现这样的问题:“The C compiler identification is unknownn...”,可参考这篇博客 在windows下使用Vscode用…

面试题之ElasticSearch

面试题之ElasticSearch 1.es的基础知识2. es的集群、节点、分片、副本分片的定义&#xff1f;3. es为什么快&#xff1f;4. 倒排索引的原理是什么&#xff1f;5. es的segment是什么&#xff1f;6. es的分段存储和分段索引的概念及区别&#xff1f;7. 索引相关的问题&#xff1f…

服务器感染了.DevicData-P-XXXXXXXX勒索病毒,如何确保数据文件完整恢复?

引言&#xff1a; 在当今数字化时代&#xff0c;勒索病毒已成为网络安全威胁的一个严峻问题。其中&#xff0c;.DevicData-P-XXXXXXXX 勒索病毒以其恶意加密文件的手段引起了广泛关注。本文将介绍该病毒的特点、数据恢复方法以及如何预防遭受其攻击。 如不幸感染这个勒索病毒&…

【Java数据结构】03-二叉树,树和森林

4 二叉树、树和森林 重点章节&#xff0c;在选择&#xff0c;填空&#xff0c;综合中都有考察到。 4.1 掌握二叉树、树和森林的定义以及它们之间的异同点 1. 二叉树&#xff08;Binary Tree&#xff09; 定义&#xff1a; 二叉树是一种特殊的树结构&#xff0c;其中每个节点…

Python(wordcloud):根据词频信息(xlsx、csv文件)绘制词云图

一、前言 本文将介绍如何用python根据词频信息&#xff08;xlsx、csv文件&#xff09;绘制词云图&#xff0c;除了绘制常规形状的词云图&#xff08;比如长方形&#xff09;&#xff0c;还可以指定词云图的形状。 二、安装并引入相关的库 1、安装相关的库 pip install jieb…