Maven私服

1 Maven私服简介

Maven 私服是一种特殊的Maven远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。

1.1 下载构件顺序

建立私服后,当局域网内的用户需要某个构件时,会按照如下顺序进行请求和下载:

  • 第1步:请求本地仓库,若本地仓库不存在所需构件,则跳转到第 2 步;
  • 第2步:请求 Maven 私服,将所需构件下载到本地仓库,若私服中不存在所需构件,则跳转到第 3 步;
  • 第3步:请求外部的远程仓库,将所需构件下载并缓存到 Maven 私服,若外部远程仓库不存在所需构件,则 Maven 直接报错。

此外,一些无法从外部仓库下载到的构件,也能从本地上传到私服供其他人使用。

1.2 私服的优势
  • 节省外网带宽
    消除对外部远程仓库的大量重复请求,降低外网带宽压力。
  • 下载速度更快
    Maven私服位于局域网内,从私服下载构建更快更稳定。
  • 便于部署第三方构件
    有些构件无法从任何一个远程仓库中获得(如:公司或组织内部的私有构件、Oracle的JDBC驱动等),建立私服之后,就可以将这些构件部署到私服中,供内部Maven项目使用。
  • 提高项目的稳定性,增强对项目的控制
    如果不建立私服,那么Maven项目的构件就高度依赖外部的远程仓库,若外部网络不稳定,则项目的构建过程也会变得不稳定。建立私服后,即使外部网络状况不佳甚至中断,只要私服中已经缓存了所需的构件,Maven也能够正常运行。私服软件(如:Nexus)提供了很多控制功能(如:权限管理、RELEASE/SNAPSHOT版本控制等),可以对仓库进行一些更加高级的控制。
  • 降低中央仓库得负荷压力
    由于私服会缓存中央仓库得构件,避免了很多对中央仓库的重复下载,降低了中央仓库的负荷。
1.3 常见的Maven私服产品
  • Apache的Archiva
  • JFrog的Artifactory
  • Sonatype的Nexus(当前最流行、使用最广泛)

2 Nexus下载安装

在Nexus下载所需的安装包,并解压到按照路径下即可。
以管理员身份打开CMD,进入bin目录下,执行./nexus /run命令启动,启动成功如图所示:
在这里插入图片描述
访问 Nexus 首页,地址为http://localhost:8081/,8081为默认端口号。
在这里插入图片描述

2.1 Nexus登录

在这里插入图片描述
此处的用户名为admin,密码存储在nexus安装路径下admin.password文件中,如D:\DevProgramFiles\nexus-3.61.0-02-win64\sonatype-work\nexus3\admin.password文件中。
登录后的nexus设置:
在这里插入图片描述
设置新密码
在这里插入图片描述
设置是否匿名访问(禁用匿名访问)
在这里插入图片描述
完成配置:
在这里插入图片描述

2.2 Nexus中的仓库介绍

在这里插入图片描述

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

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

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

3 通过Nexus下载jar包

3.1 配置仓库地址
  • 配置mirror镜像地址为当前的nexus仓库地址
    如果配置了其他的仓库地址,替换为如下配置。
<mirror><id>nexus-mine</id><mirrorOf>central</mirrorOf><name>Nexus mine</name><url>http://localhost:8081/repository/maven-public/</url>
</mirror>
3.2 设置访问用户和密码

由于不支持匿名访问,因此需要在settings.xml文件中的servers标签中配置访问的用户名和密码

<server><id>nexus-mine</id><username>admin</username><password>123456</password>
</server>

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

3.3 jar包的上传和下载

此时mvn clean compile项目,会发现下载jar包并上传到nexus:

Downloading from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-compiler-api/2.8.4/plexus-compiler-api-2.8.4.jar
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/commons-io/commons-io/2.5/commons-io-2.5.jar (209 kB at 11 kB/s)
Downloading from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-compiler-manager/2.8.4/plexus-compiler-manager-2.8.4.jar
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-compiler-manager/2.8.4/plexus-compiler-manager-2.8.4.jar (4.7 kB at 227 B/s)
Downloading from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-compiler-javac/2.8.4/plexus-compiler-javac-2.8.4.jar
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/org/ow2/asm/asm/6.2/asm-6.2.jar (111 kB at 5.3 kB/s)
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-java/0.9.10/plexus-java-0.9.10.jar (39 kB at 1.8 kB/s)
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/com/thoughtworks/qdox/qdox/2.0-M9/qdox-2.0-M9.jar (317 kB at 14 kB/s)
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-compiler-api/2.8.4/plexus-compiler-api-2.8.4.jar (27 kB at 1.2 kB/s)
Downloaded from nexus-mine: http://localhost:8081/repository/maven-public/org/codehaus/plexus/plexus-compiler-javac/2.8.4/plexus-compiler-javac-2.8.4.jar (21 kB at 938 B/s)
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 3 source files to D:\DevWorkspace\IntelliJIDEAWS\giser-java\giser-java-common\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  05:16 min
[INFO] Finished at: 2023-12-23T20:45:41+08:00
[INFO] ------------------------------------------------------------------------

此时再次查看Nexus服务器,对应的仓库中就有了jar包了。如下:
在这里插入图片描述

3.4 更新中央仓库地址

上述下载实际上是通过Maven中央仓库下载,然后上传到nexus,再下载到本地的。为了提高下载速度,可以修改中央仓库地址为国内的镜像地址,如阿里云镜像地址。
在这里插入图片描述
将④处的地址改为阿里云镜像仓库地址:http://maven.aliyun.com/nexus/content/groups/public/
原始地址为:https://repo1.maven.org/maven2/

4 通过Nexus部署jar包

在Maven工程中配置如下信息:

<distributionManagement><snapshotRepository><id>nexus-mine</id><name>Nexus Snapshot</name><url>http://localhost:8081/repository/maven-snapshots/</url></snapshotRepository>
</distributionManagement>

**注意:**这里 snapshotRepository 的 id 标签必须和 settings.xml 中指定的 mirror 标签的 id 属性一致。
执行部署命令mvn deploy即可。

Uploading to nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/1.0-SNAPSHOT/giser-java-common-1.0-20231223.130426-1.pom
Uploaded to nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/1.0-SNAPSHOT/giser-java-common-1.0-20231223.130426-1.pom (1.7 kB at 4.5 kB/s)
Downloading from nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/maven-metadata.xml
Uploading to nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/1.0-SNAPSHOT/maven-metadata.xml
Uploaded to nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/1.0-SNAPSHOT/maven-metadata.xml (770 B at 1.1 kB/s)
Uploading to nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/maven-metadata.xml
Uploaded to nexus-mine: http://localhost:8081/repository/maven-snapshots/com/giser/giser-java-common/maven-metadata.xml (284 B at 361 B/s)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:53 min
[INFO] Finished at: 2023-12-23T21:04:29+08:00
[INFO] ------------------------------------------------------------------------Process finished with exit code 0

此时再次查看Nexus服务器,对应的仓库中就有部署的jar包了。如下:
在这里插入图片描述

4 引用jar包

在工程中配置仓库地址,如下:

<repositories><repository><id>nexus-mine</id><name>nexus-mine</name><url>http://localhost:8081/repository/maven-snapshots/</url><snapshots><enabled>true</enabled></snapshots><releases><enabled>true</enabled></releases></repository>
</repositories>

这样就可以通过坐标直接引用jar包了。

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

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

相关文章

Unity3d--跨平台(一)

转自&#xff1a;https://www.cnblogs.com/murongxiaopifu/p/4211964.html前言&#xff1a; 其实小匹夫在U3D的开发中一直对U3D的跨平台能力很好奇。到底是什么原理使得U3D可以跨平台呢&#xff1f;后来发现了Mono的作用&#xff0c;并进一步了解到了CIL的存在。所以&#xff0…

linux定时任务的用法详解

crontab的基本格式&#xff1a; f1  f2  f3  f4  f5  command 分  时 日  月  周  命令 第一列f1代表分钟1~59&#xff1a;当f1为表示每分钟都要执行&#xff1b;为/n表示每n分钟执行一次&#xff1b;为a-b表示从第a分钟到第b分钟这段时间要执行&#xff1b;为a,…

Unity3d-跨平台(二)

转自&#xff1a;http://www.jiandaima.com/blog/archives/945.html 是如何输出到多平台的&#xff1f; 我的第一篇文章&#xff0c;选择了一个不那么简单的主题&#xff0c;但是是我近期比较感兴趣的。这周&#xff0c;我和一个朋友&#xff0c;谈到了游戏开发和Unity3D&#…

svn冲突解决方案

解决方法 步骤一、清空svn的队列 1、进入到项目的.svn目录中&#xff0c;查看是否存在wc.db文件 C:\Users\Administrator>D:D:\>cd D:\BBK_SVN\I3_TrunkD:\BBK_SVN\I3_Trunk>cd .svnD:\BBK_SVN\I3_Trunk\.svn>dirVolume in drive D has no label.Volume Serial Nu…

redis集群搭建与配置

redis集群搭建与配置

keepalived的安装与添加服务

keepalived的安装与添加服务

Mr. Bender and Square

Description Mr. Bender has a digital table of size n  n, each cell can be switched on or off. He wants the field to have at least c switched on squares. When this condition is fulfilled, Mr Bender will be happy. Well consider the table rows numbered from…

keepalived+nginx保持高可用配置

安装nginx、keepalived nginx安装 keepalived安装与添加服务在/etc/keepalived目录下新建nginx_check.sh&#xff08;两台服务器都需要&#xff09; 配置keepalived.conf: #配置邮箱 global_defs {notification_email {# acassenfirewall.loc# failoverfirewall.loc# sysadmin…

nginx+keepalived详细配置信息

Nginx Keepalived 第一步&#xff1a; 下载keepalived地址&#xff1a;http://www.keepalived.org/download.html 解压安装&#xff1a; tar -zxvf keepalived-1.2.18.tar.gz -C /usr/local/ yum install -y openssl openssl-devel&#xff08;需要安装一个软件包&#xff09…

毕业3年,为何技术能力相差越来越大?

导读&#xff1a;毕业三年&#xff0c;每个人在技术能力跑道上&#xff0c;有了或大或小的差距。有些人永远在重复的劳动&#xff0c;有些人却能从中总结和解决问题。今天我们来探讨下&#xff0c;如何避免让战术上的勤奋掩盖战略上的懒惰&#xff0c;使得真正掌握好的知识点慢…

Periodic Signal

描述 Profess X is an expert in signal processing. He has a device which can send a particular 1 second signal repeatedly. The signal is A0 ... An-1 under n Hz sampling. One day, the device fell on the ground accidentally. Profess X wanted to check whether …

boost stacktrace堆栈打印

在windows下最方便的是minidump,其他2个平台麻烦不少,google-breakpad使用起来又太麻烦. 最近boost1.65版本出了个stacktrace使用起来简单方便,只是无法看实际数据,对于快速定位BUG还是很有帮助的. 要注意的是异常的处理需要写文件,应用重启之后再读取查看~ 用其他应用读取或…

Windows下dump文件生成与分析

一、 生成Dump文件方式 1.1任务管理器 在程序崩溃后&#xff0c;先不关闭程序&#xff0c;在任务管理器中找到该程序对应的进程。右键—>创建转储文件。 此时会在默认的目录下创建出一个dump文件。 可以看出&#xff0c;此种方法只适用于程序崩溃但没有立即自行退出的情…

迪杰斯特拉算法 两点间最短路径的选择

百度首页 登录 注册 新闻网页贴吧知道音乐图片视频地图百科文库进入词条搜索词条帮助首页分类艺术科学自然文化地理生活社会人物经济体育历史特色百科历史上的今天数字博物馆史记2015城市百科二战百科非遗百科用户蝌蚪团燃梦计划百科任务百科商城权威合作合作模式常见问题联系方…

TLS--线程局部存储

转自&#xff1a;https://blog.csdn.net/u013761036/article/details/54960277 这个东西并不陌生了&#xff0c;之前写过了一个关于这个的应用&#xff0c;利用静态TLS姿势实现代码段静态加密免杀或者所谓的加壳思路。地址在这:http://blog.csdn.net/u013761036/article/detai…

向量内积(点乘)和外积(叉乘)概念及几何意义

向量的内积&#xff08;点乘&#xff09; 定义 概括地说&#xff0c;向量的内积&#xff08;点乘/数量积&#xff09;。对两个向量执行点乘运算&#xff0c;就是对这两个向量对应位一一相乘之后求和的操作&#xff0c;如下所示&#xff0c;对于向量a和向量b&#xff1a; a和b…

SVN分支/合并

转自&#xff1a;https://blog.csdn.net/e3002/article/details/21469437 先说说什么是branch。按照Subversion的说法&#xff0c;一个branch是某个development line&#xff08;通常是主线也即trunk&#xff09;的一个拷贝&#xff0c;见下图&#xff1a; branch存在的意义在…

prim算法 求最小生成树

最小生成树Prim算法理解 标签&#xff1a; Prim算法理解最小生成树Prim2014-08-16 18:49 18482人阅读 评论(5) 收藏 举报版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 MST&#xff08;Minimum Spanning Tree&#xff0c;最小生成树&#xff09;问…

poj 1836 Alignment

题目大意&#xff1a; 给定一排人的身高&#xff0c;求踢出最少的人可以使队列身高如下形状&#xff1a; Description In the army, a platoon is composed by n soldiers. During the morning inspection, the soldiers are aligned in a straight line in front of the capta…