Maven第五章: 搭建maven私服以及如何进行管理?

Maven第五章: 搭建maven私服以及如何进行管理?

前言

nexus是什么?

Nexus是Sonatype公司发布的一款仓库(Repository)管理软件,常用来搭建Maven私服,所以也有人将Nexus称为“Maven仓库管理器”。 Maven私服其实并不是Maven的核心概念,它仅仅是一种衍生出来的特殊的仓库,但这并不代表它不重要,相反由于私服具有降低中央仓库负荷、节省外网带宽、以及提高项目稳定性等优点,使得私服在实际开发过程中得到了相当普遍地使用。能够帮助我们建立私服的软件被称为Maven仓库管理器,主要有以下3种:Apache Archiva、JFrog Artifactory、Sonatype Nexus。其中,Sonatype Nexus是当前最流行,使用最广泛的Maven仓库管理器。 Nexus分为开源版和专业版,其中开源版足以满足大部分Maven用户的需求。

Nexus和远程仓库的关系?
  1. 代理远程仓库:Nexus作为Maven仓库管理器,可以代理远程仓库。这意味着Nexus可以存储和提供远程仓库的构件,供局域网内的Maven用户使用。
  2. 缓存构件:当Maven需要下载构件时,它会首先从Nexus请求。如果Nexus上不存在该构件,那么它会从外部的远程仓库下载,缓存到Nexus上之后,再为Maven的下载提供服务。这种缓存机制可以加速构件的下载速度,并减少对远程仓库的访问需求。
  3. 本地优先:Nexus的设计理念是本地优先(local-first),这意味着它更注重提供本地仓库的访问速度和可用性。当Maven请求构件时,Nexus会首先查找本地仓库中是否存在该构件,如果存在,则直接从本地仓库提供服务。只有在本地仓库不存在该构件时,才会从远程仓库下载。
  4. 可扩展性:Nexus可以与多个远程仓库建立连接,并可以配置不同的远程仓库源。这使得Nexus可以满足不同团队的需求,并可以根据实际情况扩展对更多远程仓库的支持。
  5. 安全性:Nexus可以提供对远程仓库的安全访问控制,例如使用HTTPS协议进行加密传输,验证远程仓库的身份等。这可以保护Maven用户的隐私和数据安全。
Nexus如何代理远程仓库?
  1. 配置远程仓库:在Nexus中,可以通过配置文件或界面来添加远程仓库的代理。通常需要提供远程仓库的URL、认证信息(如果有)以及其他相关参数。
  2. 同步远程仓库:当配置完成后,Nexus会通过定时任务或手动触发的方式同步远程仓库的内容。它会定期检查远程仓库的更新,并将更新的构件下载到本地仓库中。
  3. 提供本地服务:当Maven需要下载构件时,它会首先从Nexus请求。如果Nexus上不存在该构件,它会从外部的远程仓库下载,缓存到Nexus上之后,再为Maven的下载提供服务。如果Nexus上已经存在该构件,则直接提供本地服务。
  4. 缓存策略:Nexus通常会采用一些缓存策略来优化构件的存储和管理。例如,可以使用LRU(Least Recently Used)算法来管理本地缓存,将最近使用的构件存储在内存中,以提高访问速度。
  5. 安全性:Nexus可以提供对远程仓库的安全访问控制,例如使用HTTPS协议进行加密传输,验证远程仓库的身份等。这可以保护Maven用户的隐私和数据安全
安装

目前 Nexus 分为 Nexus 2.x 和 Nexus 3.x 两个大版本,它们是并行的关系,目前使用最多,运行最稳定的是 Nexus 2.x,下面我们以 Nexus 2.x 为例,演示 Nexus 的安装过程。

  1. 百度网盘下载 nexus-2.11.4-01-bundle.tar.gz ,官网下载不了

    http://pan.baidu.com/s/1mgznhd2

  2. 解压

[root@node3 ~]# tar -xvf nexus-2.11.4-01-bundle.tar.gz
  1. 进入解压目录

    [root@node3 ~]# cd nexus-2.11.4-01
    
  2. 查看配置文件

[root@node3 conf]# cat nexus.properties 
#
# Sonatype Nexus (TM) Open Source Version
# Copyright (c) 2008-2015 Sonatype, Inc.
# All rights reserved. Includes the third-party code listed at http://links.sonatype.com/products/nexus/oss/attributions.
#
# This program and the accompanying materials are made available under the terms of the Eclipse Public License Version 1.0,
# which accompanies this distribution and is available at http://www.eclipse.org/legal/epl-v10.html.
#
# Sonatype Nexus (TM) Professional Version is available from Sonatype, Inc. "Sonatype" and "Sonatype Nexus" are trademarks
# of Sonatype, Inc. Apache Maven is a trademark of the Apache Software Foundation. M2eclipse is a trademark of the
# Eclipse Foundation. All other trademarks are the property of their respective owners.
#

# Sonatype Nexus
# ==============
# This is the most basic configuration of Nexus.

# Jetty section
application-port=8081
application-host=0.0.0.0
nexus-webapp=${bundleBasedir}/nexus
nexus-webapp-context-path=/nexus

# Nexus section
nexus-work=${bundleBasedir}/../sonatype-work/nexus
runtime=${bundleBasedir}/nexus/WEB-INF

  1. 启动

    [root@node3 bin]# ./nexus start
    ****************************************
    WARNING - NOT RECOMMENDED TO RUN AS ROOT
    ****************************************
    If you insist running as root, then set the environment variable RUN_AS_USER=root before running this script.
    
    

    遇到上述问题,修改 nexus脚本,去掉注解

    RUN_AS_USER=root
    

    启动成功如下

    [root@node3 bin]# ./nexus start 
    ****************************************
    WARNING - NOT RECOMMENDED TO RUN AS ROOT
    ****************************************
    Starting Nexus OSS...
    Started Nexus OSS.
    
    
  2. 启动成功后打开浏览器输入:http://localhost:8081/nexus 默认账号和密码:用户名:admin 密码:admin123

在这里插入图片描述

Nexus 仓库属性

点击左边导航栏中的 Repositories,可以看到 Nexus 自带的几个内置仓库,如下图所示。

在这里插入图片描述

在仓库列表中,每个仓库都具有一系列属性:

  • Type:仓库的类型,Nexus 中有 4 中仓库类型:group(仓库组)、hosted(宿主仓库)、proxy(代理仓库)以及 virtual(虚拟仓库)。
  • Format:仓库的格式。
  • Policy:仓库的策略,表示该仓库是发布(Release)版本仓库还是快照(Snapshot)版本仓库。
  • Repository Status:仓库的状态。
  • Repository Path:仓库的路径。

由图 可知,Nexus 2.x 默认创建了 6 个仓库,我们称它们为 Nexus 内置仓库。

  • Maven Central:该仓库用来代理 Maven 中央仓库,其策略为 Release,只会下载和缓存中央仓库中的发布版本的构件。
  • Releases:策略为 Release 的宿主仓库,用来部署公司或组织内部的发布版本构件。
  • Snapshots:策略为 Snapshot 的宿主仓库,用来部署公司或组织内部的快照版本构件。
  • 3rd party:策略为 Release 的宿主仓库,用来部署第三方发布版本构件,这些构件一般无法从任何远程仓库中获得。
  • Public Repositories:该仓库组将上述所有存储策略为 Release 的仓库聚合并通过统一的地址提供服务。
Nexus 仓库分类

Nexus 仓库按照类型(Type)区分,主要分为以下 3 个类型:

  • 代理仓库(proxy):用来代理远程公共仓库,如 Maven 中央仓库、JBoss 远程仓库。

  • 宿主仓库(hosted):又称 Nexus 本地仓库,该仓库通常用来部署本地项目所产生的构件。

  • 仓库组(group):用来聚合代理仓库和宿主仓库,为这些仓库提供统一的服务地址,以便 Maven 可以更加方便地获得这些仓库中的构件。

为了更加直观的理解仓库组、代理仓库和宿主仓库的概念,我们通过下图展示它们的用途和区别。

在这里插入图片描述

由上图可知:

  • Maven 可以直接从宿主仓库中下载构件。
  • Maven 也可以从代理仓库中下载构件,代理仓库会从远程仓库下载并缓存构件。
  • Maven 还可以从仓库组中下载构件,仓库组会从其包含的宿主仓库和代理仓库中获取构件。
IntelliJ IDE使用私服配置

修改setting.xml 添加如下:

</mirrors>
  <mirror>
     <id>central</id>
     <mirrorOf>*</mirrorOf>
     <name>Central Repository</name>
     <url>http://192.168.1.20:8081/nexus/content/groups/public/</url>
   </mirror>
 </mirrors>

修改 工程设置,一定要把user setting file 钩给勾上 . 这样工程就可以使用私服了

在这里插入图片描述

IntelliJ IDE上传构建到私服

直接用 idea 中的 mvn deploy 按钮就可以将 打好的 jar 包或者 war包上传到 私服中 (mvn ckean install 是将jar包安装到本地仓库)

maven setting.xml 添加如下配置:

 <servers>  
   <server>
     <id>nexus-releases</id>
     <username>admin</username>
     <password>admin123</password>
   </server>
   <server>
     <id>nexus-snapshots</id>
     <username>admin</username>
     <password>admin123</password>
   </server>
 </servers>

工程pom.xml 添加如下配置:

<distributionManagement>
    <repository>
      <id>nexus-releases</id>
      <name>Nexus Release Repository</name>
      <url>http://192.168.1.20:8081/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
      <id>nexus-snapshots</id>
      <name>Nexus Snapshot Repository</name>
      <url>http://192.168.1.20:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
  </distributionManagement>

提示:ID必须要一致,否则报错
在这里插入图片描述

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

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

相关文章

高防CDN如何在防护cc上大显神通

高级防御CDN&#xff08;Content Delivery Network&#xff09;在对抗CC&#xff08;HTTP Flood&#xff09;攻击方面扮演着关键的角色&#xff0c;具备以下重要职能和作用&#xff1a; 流量分散&#xff1a;CC攻击的目标是通过大规模的HTTP请求使服务器过载&#xff0c;从而导…

python脚本-读取shadow关键信息并爆破密码

python脚本-读取shadow关键信息并爆破密码 代码 import crypt from colorama import Fore,Styledef crack():# 密码爆破函数定义with open(/root/top1000.txt) as f:# 此处更改密码字典for passwd in f:passwd2crypt.crypt(passwd.strip(),salt)if passwd2 passwd_hash:prin…

css中flexbox和grid的区别

css中flexbox和grid的区别 我们是不是被那些不会按预期排列的元素所影响&#xff1f;这篇文章我们将深入探讨css中flexbox和grid的布局。通过了解他们的主要差异&#xff0c;我们会发现这些布局是如何改变我们网站的风格。 理解CSS布局 css布局是网页设计的一个重要方面&…

stm32整理(三)ADC

1 ADC简介 1.1 ADC 简介 12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道&#xff0c;可测量来自 16 个外部 源、两个内部源和 VBAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续 采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位…

单目标应用:红尾鹰算法(Red‑tailed hawk algorithm ,RTH)求解微电网优化MATLAB

一、微网系统运行优化模型 微电网优化模型介绍&#xff1a; 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、红尾鹰算法RTH 红尾鹰算法&#xff08;Red‑tailed hawk algorithm &#xff0c;RTH&#xff09;由Seydali Ferahtia等人于2023年提出&#xff0c;该算法…

[MySQL]索引

目录 概念解释 作用/优点 缺点 适用场景 索引的创建,删除与查看 系统对索引的自动创建 索引建立的时机 索引存储的数据结构 选择B树的原因 B树的原理 查询流程 优点 B树 与B树的区别 优点 概念解释 索引就像是一本字典的目录,我们可以根据目录快速定位到我们想…

高防CDN的特点与作用

高级防护CDN是一种专门设计用于提供出色的网络安全功能的内容分发网络。它通过采用分布式节点、智能路由和强大的安全机制&#xff0c;旨在确保网站在面临各种网络攻击时保持安全&#xff0c;同时提供内容的快速传递和优化功能。那么&#xff0c;高级防护CDN有哪些独特的特点和…

CSS内容过多保留固定字数并显示省略号

一、业务场景&#xff1a; 详情内容过多时&#xff0c;会使布局错乱&#xff0c;需要保留固定的字数&#xff0c;鼠标划上显示出全部内容 三、具体实现步骤&#xff1a; <a-tooltip><template slot"title">{{lastChe}}</template><span class…

红米redmi note7救砖/线刷/ROOT教程

一直循环开机界面&#xff0c;需要刷机 准备 使用windows电脑安装如下 MiUsbDriver.exe电脑连接小米手机驱动。可以去https://www.miui.com/unlock/index.html下载压缩包&#xff0c;里面有这个程序小米ROM固件包找一个适合自己手机型号的的即可&#xff0c;官网也可以下载但…

创建Vite项目

一、创建vite项目 新建vue-test,点击在集成终端中打开&#xff0c;输入npm init vuelatest 输入项目名vue-test 是否使用 TypeScript 语法&#xff1f; 否 / 是 &#xff1b;按tab键输入选择是 依次敲回车 进入vue-test/vuetest目录&#xff0c;安装依赖模块,命令: npm insta…

如何在Linux命令行界面愉快进行性能测试?

本人在做性能测试的过程中&#xff0c;遇到一个问题&#xff0c;测试机选了一台Linux服务器&#xff0c;只有命令行界面。执行测试用例不是非常的灵活&#xff0c;有时候我需要改一两个参数添加一些日志&#xff0c;都需要重新打包部署&#xff0c;虽然自动化构建比较方便&…

【MySQL进阶之路丨第十四篇】一文带你精通MySQL重复数据及SQL注入

引言 在上一篇中我们介绍了MySQL ALTER命令及序列使用&#xff1b;在开发中&#xff0c;对MySQL重复数据的处理是十分重要的。这一篇我们使用命令行方式来帮助读者掌握MySQL中重复数据的操作。 上一篇链接&#xff1a;【MySQL进阶之路丨第十三篇】一文带你精通MySQL之ALTER命令…

传输层协议——TCP协议 (详解!!!)

目录 TCP的报文格式 1. 源端口号&#xff0c;目的端口号 和 udp 相同&#xff08;前面文章介绍了udp&#xff09; 2. 4位首部长度 —— TCP的报头长度 3. 选项 —— option &#xff08;可选的&#xff1a;可以有&#xff0c;可以没有&#xff09; 4.保留&#xff08;6…

poi兴趣点推荐数据集介绍

介绍 foursquare数据集包含2153471个用户&#xff0c;1143092个场所&#xff0c;1021970个签到&#xff0c;27098490个社交关系以及用户分配给场所的2809581评级&#xff0c;我们常用的是根据NYC和TKY都是从该数据集中抽取出来的。 下载地址&#xff1a;https://sites.google.…

自己动手实现一个深度学习算法——二、神经网络的实现

文章目录 1. 神经网络概述1&#xff09;表示2&#xff09;激活函数3&#xff09;sigmoid函数4&#xff09;阶跃函数的实现5&#xff09;sigmoid函数的实现6)sigmoid函数和阶跃函数的比较7&#xff09;非线性函数8&#xff09;ReLU函数 2.三层神经网络的实现1&#xff09;结构2&…

Qt Concurrent框架详解(QFuture、QFutureWatcher)

1.概述 Qt Concurrent是Qt提供的一个并发编程框架&#xff0c;用于简化多线程和并行计算的开发。它提供了一组易于使用的函数和类&#xff0c;可以方便地在多线程环境下处理并发任务。 有以下特点&#xff1a; 简单易用&#xff1a;Qt Concurrent提供了一组高级函数和类&…

数据库-索引

概念&#xff1a; Mysql 索引 事务 存储引擎 索引&#xff1a;索引是一个排序的列表&#xff0c;列表当中存储的是索引的值和包含这个值的数据所在行的物理地址 索引的作用&#xff1a;就好比书的目录&#xff0c;加快查询的速度 概念图&#xff1a; 索引的作用&#xff1a…

第四章 应用SysML基本特性集的汽车示例 P1|系统建模语言SysML实用指南学习

仅供个人学习记录 汽车模型 主要就是应用练习建模了 Automobile Domain包 用于组织模型的包图 将模型组织入包的包图 需求图捕获汽车规范 汽车规范中包含系统需求的需求图 块定义图定义车辆及其外部环境 汽车域块定义图 用例图表示操作车辆 描述车辆主要功能的用…

uniapp中APP端使用echarts用formatter设置y轴保留2位小数点不生效

uniapp使用echarts&#xff0c;在内置浏览器中&#xff0c;设置保留2位小数能正常显示&#xff08;代码如下&#xff09;&#xff0c;但是在APP端这个设置不起作用。 yAxis: {type: value,axisLabel: {formatter: function (val) {return val.toFixed(2); //y轴始终保留小数点…

【Java 进阶篇】Java Web开发:实现验证码功能

在Web应用程序中&#xff0c;验证码&#xff08;CAPTCHA&#xff09;是一种常见的安全工具&#xff0c;用于验证用户是否为人类而不是机器。验证码通常以图像形式呈现&#xff0c;要求用户在登录或注册时输入正确的字符。在这篇文章中&#xff0c;我们将详细介绍如何在Java Web…
最新文章