maven Nexus 私库安装使用总结

news2024/9/19 10:57:28

maven Nexus私库安装使用总结

大纲

  • nexus安装总结
  • nexus使用总结
  • 域名配置
  • admin账号密码修改
  • 创建仓库组
  • 创建仓库
  • 创建权限
  • 创建角色
  • 创建用户
  • mvn deploy 部署配置

nexus安装总结

本例子使用的是常见的nexus2.x版本 注意需要先安装JDK

Nexus 专业版是需要付费的,这里我们下载开源版 Nexus OSS。Nexus 提供两种安装包,一种是包含 Jetty 容器的 bundle 包,另一种是不包含容器的 war 包

相关的nexus-2.14.5-02-bundle.zip 以上传到百度云盘

nexus2.x 下载地址 https://help.sonatype.com/repomanager2/release-notes/2022-release-notes
nexus3.x 下载地址 https://help.sonatype.com/repomanager3/product-information/download

安装步骤

解压zip包

在这里插入图片描述

解压完以后会得到两个目录:

  • nexus-2.14.5-02 (放的是nexus程序)
  • sonatype-work (放的是nexus各种数据例如仓库,jar包 日志等)
    在这里插入图片描述sonatype-work 放的是nexus各种数据例如仓库,jar包 日志等

在这里插入图片描述

修改配置

可以修改nexus启动的端口,主要是修改 conf/nexus.properties

在这里插入图片描述

启动nexus

启动脚本保存在bin文件夹下 nexus命令, 此命令可以带多个参数 stop restart start等
如果是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

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

启动成功后访问 http://ip:端口/nexus 默认账号密码 admin /admin123

nexus使用总结

域名配置

域名配置可以实现使用域名访问私库

在这里插入图片描述

点击server菜单 修改域名

在这里插入图片描述

保存后即可

在这里插入图片描述

账号密码修改

右上角的下拉菜单,点击后选择profile 可以修改admin的账号密码

在这里插入图片描述

创建仓库组

nexus安装完成后默认创建 Public Repositories组,我们在pom.xml配置中可以使用这个组,就可以拉取默认4个仓库的内容

在这里插入图片描述

例如创建一个 jim自定义组 这个组无法获取 3rd party库

在这里插入图片描述

分别访问
http://repositiry.neuxs.com/nexus/content/groups/jim/ 
http://repositiry.neuxs.com/nexus/content/groups/public/

可以看到自定义组 Jim Repositories没有三方库中的包
在这里插入图片描述

在项目pom.xml中可以添加repository (注意如果setting.xml中配置了mirror 则以下配置无效)

<repositories>
		<repository>
			<id>my-maven</id>
			<name>my-maven</name>
			<url>http://repositiry.neuxs.com/nexus/content/groups/jim/</url>
			<layout>default</layout> <!--此配置可以不用配置 默认default  default(默认)legacy(遗留 对应maven.1.x)->
			<snapshots>
				<enabled>true</enabled>   <!--可以从这个仓库下载snapshots版本-->
				<updatePolicy>always</updatePolicy> <!-- 仓库更新策略 always 或者 never -->
			</snapshots>
			<releases>
				<enabled>true</enabled> <!--可以从这个仓库下载releases版本-->
			</releases>
       </repository>
</repositories>

updatePolicy可以配置仓库的更新策略 【always | daily | interval | never】

  • always 是每次都去远程仓库查看是否有更新,
  • daily 是只在第一次的时候查看是否有更新,当天的其它时候则不会查看;
  • interval 允许设置一个分钟为单位的间隔时间,在这个间隔时间内只会去远程仓库中查找一次,
  • never 是不会去远程仓库中查找

创建仓库

Nexus 2.x 默认创建了 6 个仓库,我们称它们为 Nexus 内置仓库:

  • Maven Central:该仓库用来代理 Maven 中央仓库,其策略为 Release,只会下载和缓存中央仓库中的发布版本的构件
  • Releases:策略为 Release 的宿主仓库,用来部署公司或组织内部的发布版本构件 (程序每一次正常版本发布都应该发布到Release库中)
  • Snapshots:策略为 Snapshot 的宿主仓库,用来部署公司或组织内部的快照版本构件
  • 3rd party:策略为 Release 的宿主仓库,用来部署第三方发布版本构件,这些构件一般无法从任何远程仓库中获得 (所以由公司内部人员手动上传到maven)
  • Public Repositories:该仓库组将上述所有存储策略为 Release 的仓库聚合并通过统一的地址提供服务

仓库的策略:

  • Release
  • Snapshots

每个仓库都具有一系列属性:

  • Type:仓库的类型,Nexus 中有 4 中仓库类型:group(仓库组)、hosted(宿主仓库)、proxy(代理仓库)以及 virtual(虚拟仓库)。
  • Format:仓库的格式。
  • Policy:仓库的策略,表示该仓库是发布(Release)版本仓库还是快照(Snapshot)版本仓库。
  • Repository Status:仓库的状态。
  • Repository Path:仓库的路径。
(1)hosted 类型的仓库,内部项目的发布仓库 此类仓库数据保存在安装nexus的集群上
(2)releases内部的模块中release模块的发布仓库
(3)snapshots发布内部的SNAPSHOT模块的仓库
(4)3rd party第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去
(5)proxy 类型的仓库,从远程中央仓库中寻找数据的仓库
(6)group 类型的仓库,组仓库用来方便我们开发人员进行设置的仓库

在这里插入图片描述

配置每个仓库的上传下载,是否可以部署等配置

在这里插入图片描述

例如创建一个Mytest 仓库类型为hosted(宿主仓库)
在这里插入图片描述

在项目pom.xml中可以添加repository即可使用Mytest ( 注意如果setting.xml中配置了mirror 则以下配置无效)

<repositories>
	<repository>
		<id>my-test</id>
		<name>my-test</name>
		<url>http://repositiry.neuxs.com/nexus/content/repositories/Mytest/</url>
	</repository> 
</repositories>

创建权限

可以给自定义的仓库创建权限 例如:给Mytest库创建

在这里插入图片描述

创建完成后可以看到出现对Mytest库 CRUD权限

在这里插入图片描述

可以基于这些新建的权限创建角色

创建角色

nexus默认创建了多种role用于管理仓库

  • Nexus开头的都是关于nexus的权限
  • Repo开头的都是关于仓库的权限
  • UI开头的都是关于UI界面的权限

在这里插入图片描述

例如:

UI:Basic UIPrivileges:让用户拥有访问Nexus界面必须的最基本的权限。

UI:Repository Browser:让用户拥有访问Nexus界面浏览仓库页面所需要的权限。

Repo:All Repositories (Read):给予用户读取所有仓库内容的权限。
没有仓库的读权限用户将无法在仓库页面看到实际的仓库内容,也无法使用Maven从仓库下载构件。

Repo:All Repositories (Full Control):给予用户完全控制所有仓库内容的权限。
用户不仅可以浏览、下载构件,还可以部署构件及删除仓库内容。

创建自定义角色test 只能对MyTest仓库进行操作

在这里插入图片描述

注意:如果要mvn deploy 必须要配置create update权限

创建用户

可以创建用户,不同的用户可以有不同的操作权限

在这里插入图片描述

用户创建成功后可以在列表中查看用户信息,修改密码

在这里插入图片描述

使用新创建的用户liuyijiang登录,可以看到权限受到控制

在这里插入图片描述

部署发布配置

日常开发过程中常用到mvn deploy将自身的项目发布到nexus上供其他人使用

实现mvn deploy前需要注意三个点

  • 1 Nexus仓库配置
  • 2 项目中的pom.xml配置
  • 3 maven settings.xml配置

Nexus仓库配置

注意仓库策略配置

  • 1 Repository Policy
  • 2 Deployment Policy

在这里插入图片描述

Repository Policy

  • Snapshot 只能上传快照版 (即项目pom.xml中 version 字段必须是-SNAPSHOT结尾)
  • Release 只能上传Release版 (version字段任意)

在这里插入图片描述

Deployment Policy

  • Allow Redeploy 允许重复deploy

    Allow Redeploy及同一个版本号可以重复提交,一般仓库策略是Snapshot(快照版)可以允许重复deploy

  • Disable Redeploy 禁止重复deploy

    Disable Redeploy及同一个版本号不能重复提交,一般仓库策略是Release,使用禁止重复deploy

  • Read Only 禁止deploy

如果不匹配Repository策略和Deployment策略 deploy时会出现 status: 400 Bad Request错误

在这里插入图片描述

项目中的pom.xml配置

项目的pom.xml文件中需要添加配置,用于指定发布到哪个仓库

<distributionManagement>
		<repository>
			<id>Mytest</id> <!--注意id 这个id在settings.xml中需要使用-->
			<url>http://repositiry.neuxs.com/nexus/content/repositories/Mytest/</url> <!--配置对应的仓库地址-->
		</repository>
</distributionManagement>

maven settings.xml配置

需要在maven settings.xml配置文件加入拥有对应库操作权限的用户账号密码

在这里插入图片描述

注意: id 就是pom.xml文件中配置的id

注意:如果账号密码配置错误或账号没有权限 deploy时会出现 status: 403 Forbidden

在这里插入图片描述

可以给团队每个用户创建对应的账号,配合nexus的 System Feeds 功能查看最近的deploy是哪个用户什么时候发布的

在这里插入图片描述

其他一些配置

配置通知邮箱

在这里插入图片描述

配置定时任务

在这里插入图片描述

常见的一些定时任务

Download Indexs:为代理仓库下载远程索引。
Empty Trash:清空Nexus的回收站,一些操作实际是将文件移到了回收站中。
Evict UnusedProxied Items From Repository Caches:删除代理仓库中长期未被使用的构件缓存。
Expire RepositoryCache:Nexus为代理仓库维护了远程仓库的信息以避免不必要的网络流量,该任务清空这些信息以强制Nexus去重新获取远程仓库的信息。
Publish Indexs:将仓库索引发布成可供m2eclipse和其他Nexus使用的格式。
Purge NexusTimeline:删除Nexus的时间线文件,该文件用于建立系统的RSS源。
Rebuild MavenMetadata Files:基于仓库内容重新创建仓库元数据文件maven-metadata.xml,同时重新创建每个文件的校验和md5与sha1。
ReIndexRepositories:为仓库编纂索引。
Remove SnapshotsFrom Repositories:以可配置的方式删除仓库的快照构件。
Synchronize ShadowRepository:同步虚拟仓库的内容(服务基于Maven1)。

mirror 与 Repository的区别

可以在maven settings.xml 配置mirror

例如在setting.xml 配置了mirror 则优先使用此次的配置
  <mirrors>
	  <mirror>
	    <id>nexus</id>
	    <mirrorOf>*</mirrorOf>
	    <name>Nexus</name>
	    <url>http://nexus.medcrab.com/content/groups/public/</url> 
	  </mirror> 
  </mirrors>

mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址,所以如果settings.xml 中配置了mirror那么项目中的pom.xml Repository配置无效

标签里面放置的是要被镜像的Repository ID

Maven还支持更高级的镜像配置:

<mirrorOf>*</mirrorOf> 
        匹配所有远程仓库。 

<mirrorOf>repo1,repo2</mirrorOf> 
        匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。 

<mirrorOf>*,!repo1</miiroOf> 
        匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除。 

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

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

相关文章

硬件学习 软件 Cadence day11 PCB 设计中 临时 的翻转/旋转快捷键设置等

1. PCB设计中多种快捷键设置 (临时的) 1.1 旋转 90 快捷键设置 &#xff08;角度自己可以改 &#xff09; alias ~R angle 90 #CtrlR 1.2 元器件 底层 和 顶层交换的快捷键 &#xff08;临时的&#xff09; alias ~F mirror #Ctrl F 参考文章&#xff1a;Cadenc…

数据结构--单链表的建立

数据结构–链表的建立 目标&#xff1a; Step 1:初始化一个单链表 Step 2:每次取一个数据元素&#xff0c;插入到表尾/表头 尾插法建立单链表 代码实现 typedef struct LNode {int data;struct LNode *next; }LNode, *LinkList;LinkList List_TailInsert(LinkList &L) {…

vditor 自定渲染,lute.js api

渲染器函数 目前支持的渲染回调场景如下&#xff1a; 即使渲染&#xff1a;IR -> SpinVditorIRDOM 分屏&#xff1a;sv -> SpinVditorSVDOM 所见所得&#xff1a;wysiwyg -> SpinVditorDOM // 自定义回调 vue 为例子 after: function () {this.vditor.vditor.lute.Se…

2023年城市分站系统源码采用php语言

系统源码介绍&#xff1a; 本系统采用了php语言&#xff0c;根据现有了城市分布&#xff0c;包含了省市区&#xff0c;划分&#xff0c;具备了高级少选功能&#xff0c;按照每个市级城市为分站点&#xff0c;和主站点同样的模式。 安装方法&#xff1a; 快速创建几百个城市分…

如何使用配置文件参数 - 实现预训练模型训练

如何使用配置文件参数 - 实现预训练模型训练 引言为什么使用配置文件来预训练模型呢 配置文件结构举例实现通过配置文件训练模型如何微调配置文件训练出优秀的模型呢数据集特征模型架构先前研究和经验超参数调优迭代实验和评估 引言 预训练模型在各个领域的应用取得了显著的成…

实现简单的自定义曲线图

实现的效果 废话不多说看源码 package com.unite.module_index_pad.utils;import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.LinearGradient; import androi…

浅谈“信创”时代,恒辉软件发展前景

随着中国的发展&#xff0c;很多技术因为一些原因越来越受制于人&#xff0c;尤其是上游核心技术。为了解决这个问题&#xff0c;中国明确了“数字中国”建设战略&#xff0c;抢占数字经济产业链制高点。 自主创新与国产化已成为我国实现科技强国、经济强国的发展趋势与行业共…

MySQL之MHA高可用配置及故障切换实例

目录 一、MHA概述1.1 什么是MHA&#xff1f;1.2 MHA的组成<font colorblue>MHA Node &#xff08;数据节点&#xff09;<font colorblue>MHA Manager &#xff08;管理节点&#xff09;1.3 MHA 的特点 二、 MHA搭建准备2.1 实验思路2.2 实验准备 三、 MHA搭建的步骤…

rust安装

文章目录 1.官网下载2.安装3.安装验证4.打开本地文档5.安装插件6.HelloWorld①新建项目目录使用VSCode打开②新建rs文件③编译④运行 7.HelloCargo①新建项目目录使用VSCode打开②cargo build③cargo run④cargo check⑤为发布构建 8.更新与卸载 1.官网下载 官网地址&#xff…

企业数字化转型的意义及影响,你了解多少?

一、什么叫数字化转型 数字化转型是指利用数字技术和互联网的力量&#xff0c;对传统的商业模式、组织结构和流程进行全面的改造和升级&#xff0c;以适应快速变化的数字时代。它是企业和组织在面对数字化冲击和竞争压力时&#xff0c;主动采取的一种战略性调整。 数字化转型…

超级实用的思维导图软件

如果你正在寻找一款超级实用的思维导图软件&#xff0c;那么我强烈推荐你使用ProcessOn。这款软件不仅功能强大&#xff0c;而且易于使用&#xff0c;可以帮助你更好地组织和管理工作流程、学习笔记、项目管理等。 首先&#xff0c;让我们来看看ProcessOn的优点。它提供了丰富的…

@Valid @NotEmpty 数据为空返回message回前端

当添加注解NotEmpty的字段为空时&#xff0c;返回一大段异常数据。 如果想要把NotEmpty中的message返回给前端&#xff0c; 添加代码&#xff1a; ControllerAdvice public class GlobalExceptionHandler {ResponseBodyExceptionHandler(value MethodArgumentNotValidExcep…

中文词频统计及绘制词云图2

import jieba import pandas as pd import numpy as np import PIL.Image as Image from wordcloud import WordCloud#读取stopwords.txt with open(stopwords.txt,r,encoding utf-8) as f:st f.readlines()stopwords [i.strip() for i in st]with open(中国共产主义青年团第…

PMP®证书增持 CSPM-2证书,3分钟提交申请

2023年6月起&#xff0c;持有PMP证书的朋友可以直接增持一个同等级证书CSPM-2&#xff0c;不用重新考试&#xff0c;不用重新学习&#xff0c;原PMP证书不影响正常使用&#xff0c;相当于多了一个国标项目管理领域的证书。 第一步准备资料 1、填写能力评价表 2、提供2张2寸蓝底…

spark应用----统计分析电商网站的用户行为数据

目录 项目说明 题目一&#xff1a;Top5热门品类 题目二&#xff1a;Top5热门品类中每个品类的Top5活跃Session统计 scala实现 新建maven项目结构如下 配置pom.xml文件 scala代码 python实现 项目说明 本项目的数据是采集电商网站的用户行为数据&#xff0c;主要包含用户的4…

自制GPD Win2底壳

直接看效果吧&#xff0c;壳子做了一个月&#xff0c;算是从0开始吧&#xff0c; 打样就打了好几套&#xff0c;最后还差点小细节没做好&#xff0c;整体效果还算满意。

资深老鸟整理,性能测试平均负载详情,一篇足够...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 uptime 命令 每次…

6.用python写网络爬虫,表单交互

在前面几章中&#xff0c;我们下载的静态网页总是返回相同的内容。而在本章中&#xff0c;我们将与网页进行交互 根据用户输入返回对应的内容。本章将包含如下几个主题&#xff1a; 发送 POST 请求提交表单&#xff1a; 使用 cookie 登录网站&#xff1a; 用于简化表单提交的高…

EasyExcel概述

首先导入依赖 <dependencies><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version></dependency><dependency><groupId>org.apache.poi</groupId><…

element 表格复选框设置禁用

禁用之后的效果&#xff0c;移入显示不可选中 <el-table :data"tableData" :row-class-name"tableRowClassName" border height"500" style"width: 100%" selection-change"handleSelectionChange"><el-table-colu…