如何在Linux上部署Nexus私服

如何在Linux上部署Nexus私服

Nexus 是一个强大的仓库管理解决方案,由Sonatype公司开发。它主要用于软件开发中各种依赖包和构件的存储、管理和分发。

1、为什么要部署nexus?

  1. 统一管理依赖:在软件开发过程中,项目通常会依赖大量的第三方库或构件。直接从公共仓库如Maven Central、JCenter等下载,速度可能受限且不稳定。通过搭建私有的Nexus仓库,可以作为这些公共仓库的代理和缓存,提高依赖下载速度,并能在网络异常时继续提供服务。
  2. 内部构件共享:团队内部开发的构件可以直接上传到私有Nexus仓库中,方便团队成员之间共享和复用。这样既便于版本管理,又能保护内部知识产权,避免敏感代码直接暴露在外。
  3. 权限控制与审计:Nexus提供了详细的权限控制机制,可以根据组织结构和角色为不同用户提供对仓库的不同操作权限,例如发布、下载等。同时,它还支持记录所有上传、下载及构建活动的日志,便于进行合规审计和问题追踪。
  4. 构建流程优化:在CI/CD流程中集成Nexus,能够更好地控制构件发布的整个生命周期,包括SNAPSHOT版本管理和发布版本审批等,有助于提升持续集成和持续交付的效率。
  5. 多类型仓库支持:Nexus不仅支持Java/Maven生态系统的构件,还支持npm、NuGet、Docker等其他类型的包管理仓库,满足多样化的开发需求。

2、如何下载nexus?

请添加图片描述

1、下载最新版本的nexus 下载地址:http://www.sonatype.org/nexus/go (网站为国外网站,国内下载可能会很慢甚至无法下载,需要翻墙下载)

2、 博主已下载好目前最新版本的nexus放置于阿里云盘当中,有需要的小伙伴可通过云盘地址进行下载。 https://www.alipan.com/s/Z42R3FPtEyx 提取码: wp46 点击链接保存

3、如何安装nexus?

1、解压安装包:nexus-3.64.0-04-mac.tgz (博主下载的OS X的版本)

2、进入解压的目录:nexus-3.64.0-04-mac,里面有两个文件夹:nexus-3.64.0-04sonatype-work

Sonatype-work 是在安装 Nexus 后,用于存储其运行时数据和配置信息的工作目录。这个目录不在程序的安装路径下,通常是一个独立的数据存储位置,包含了所有的仓库配置、索引文件、缓存以及日志等重要数据。

进入 nexus-3.64.0-04/bin 运行 ./nexus run

请添加图片描述

出现 Started Sonatype Nexus OSS 3.64.0-04 则表示运行成功,可打开http://localhost:8081/进行访问

修改默认接口则在nexus-3.64.0-04-mac/nexus-3.64.0-04/etc/nexus-default.properties文件修改application-port,比如修改为 8888

请添加图片描述

3、配置nexus全局命令运行

vim ~/.bash_profileexport NEXUS_HOME="/Users/pengyangyan/Downloads/nexus-3.64.0-04-mac/nexus-3.64.0-04"
export PATH="$PATH:$NEXUS_HOME/bin:PATH"source ~/.bash_profile

此时就可以在任意目录运行nexus命令。

注意:mac电脑在解压nexus-3.64.0-04-mac.tgz 时,如果使用第三方解压工具,会造成nexus依赖jar包名称错误同时无法识别出jar包导致nexus无法运行,所以解压的时候最好使用mac自带的解压工具进行解压

4、登陆nexus

请添加图片描述

点击右上角Sign in 进行登陆 用户名: admin 。运行命令 cat /nexus-3.64.0-04-mac/sonatype-work/nexus3/admin.Password 可查看密码,登陆成功后会提示进行密码修改。

4、项目应用nexus进行包管理

请添加图片描述

1、点击Create repository 可创建其他类型的仓库,对于Java,里面已经内置了maven相关仓库,所以我这里就没有在进行创建,直接使用里面已有的仓库。

  1. Hosted(宿主)仓库
    • Maven Hosted:用于部署和管理内部开发团队编写的Java项目构件,包括Releases和Snapshots两种子类型。
      • Releases仓库:用于发布稳定版构件。
      • Snapshots仓库:用于存储项目快照版本的构件,这些版本可以随项目构建而频繁更新。
  2. Proxy(代理)仓库
    • Maven Proxy(或称Repository Proxy):作为远程公共仓库(如Maven中央仓库)的缓存,减少对外部网络的依赖,并且能限制哪些组件可以从外部获取。
  3. Group(仓库组)
    • Maven Group:组合多个仓库(无论是Hosted还是Proxy),为用户提供统一的访问入口。当通过一个组仓库请求组件时,Nexus会自动在组内包含的所有仓库中查找所需的构件。
  4. Docker Registry(Docker仓库)
    • Docker Hosted:托管内部开发的Docker镜像。
    • Docker Proxy:代理远程的Docker注册表,比如Docker Hub。
    • Docker Group:将多个Docker仓库聚合到一起,简化对Docker镜像的访问和管理。
  5. 其他类型
    • npm Hosted/Proxy/Group:对应于Node.js包管理器npm的仓库类型。
    • NuGet Hosted/Proxy/Group:针对.NET生态系统的NuGet包管理仓库。
    • Raw Hosted:用于托管非标准格式的文件,例如二进制文件或自定义格式的软件包。

2、配置maven的setting.xml文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0http://maven.apache.org/xsd/settings-1.0.0.xsd"><localRepository>/Users/pengyangyan/.m2/repository</localRepository><!-- Apache Maven 配置 --><pluginGroups/><proxies/><!-- nexus 服务的账户密码配置 --><servers><server><id>maven-public</id><username>admin</username><password>peng123.</password></server><server><id>maven-snapshots</id><username>admin</username><password>peng123.</password></server><server><id>maven-releases</id><username>admin</username><password>peng123.</password></server></servers><!-- 阿里云镜像 --><mirrors><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>aliyunmaven</name><url>http://maven.aliyun.com/repository/public</url></mirror><mirror><id>central</id><name>Maven Repository Switchboard</name><url>https://repo1.maven.org/maven2/</url><mirrorOf>central</mirrorOf></mirror></mirrors><profiles><!-- 阿里云配置: 提高国内的jar包下载速度--><profile><id>all</id><repositories><repository><id>alimaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories><pluginRepositories><pluginRepository><id>alimaven</id><name>aliyun maven</name><url>https://maven.aliyun.com/repository/public</url></pluginRepository></pluginRepositories></profile><!-- 本地nexus仓库--><profile><id>maven-NEXUS</id><!-- 远程仓库列表 --><repositories><repository><id>maven-public</id><name>test</name><!-- 虚拟的URL形式,指向镜像的URL--><url>http://localhost:8081/repository/maven-public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository></repositories></profile></profiles></settings>

3、手动上传jar包到私有仓库
请添加图片描述

4、项目jar推送至私有仓库

在需要发布的项目pom文件中添加distributionManagement配置,而后使用idea工具右侧的maven栏,点击deploy发布到远程仓库

在父级项目的pom.xml 配置上

    <distributionManagement><repository><id>maven-releases</id><name>Release Repositories</name><url>http://localhost:8081/repository/maven-releases/</url></repository><snapshotRepository><id>maven-snapshots</id><name>Snapshot Repositories</name><url>http://localhost:8081/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>

请添加图片描述

而后登录到你的nexus私服就能查看部署的jar包

  1. mvn package
    • 作用:完成编译、测试后,根据项目类型(如jar、war、ear等)打包项目。
  2. mvn install
    • 作用:执行 package 之后,还将包安装到本地仓库,使得其他本地项目可以引用此项目作为依赖。
  3. mvn deploy
    • 作用:在成功完成 install 的基础上,将最终构建的工件部署到远程仓库,供其他团队成员或项目使用。

请添加图片描述

看到如图内容表示jar已成功推送到私有仓库。

完结,撒花🎉!!!

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

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

相关文章

(Bean工厂的后处理器入门)学习Spring的第七天

一 . Bean工厂的后处理器入门 : 直接上图 BeanDefinitionRegistyPostProcessor 为 BeanFactoryProcessor的子接口 , 前者先执行(图里只有Bean工厂的后处理器第一个类型) 如下图 : 这两个接口可改变两个Map(BeanDefinitionMap , singletonObject)里的信息 (黑马只讲了BeanFact…

浅谈拨测在网络安全中的应用

在当今数字化时代&#xff0c;网络安全成为各个行业和组织关注的焦点。为了保障网络的稳定性和信息的安全&#xff0c;拨测安全性成为一种日益重要的工具。本文将介绍拨测在网络安全中的应用&#xff1a; 1.威胁模拟 通过威胁模拟&#xff0c;拨测安全性可以模拟各种网络攻击&a…

vue(vue2)使用svg格式图标

先安装插件 配置svg文件夹&#xff0c;新建icons文件&#xff0c;svg文件夹放svg后缀文件 index.js文件中的配置 import Vue from "vue" import svgIcon from "/common/iconSvg/index.vue"Vue.component(svg-icon,svgIcon) //挂载全局组件//下面…

vue3 项目中 arguments 对象获取失败问题

问题 在 vue3 项目中 获取到的 arguments 对象与传入实参不符&#xff0c;打印出函数中的 arguments 对象显示如下&#xff1a; 原因 作者仔细回看代码才发现&#xff0c;自己一直用的是 vue3 的组合式写法&#xff0c;函数都是箭头函数&#xff0c;而箭头函数不存在 argumen…

Ddosify 作为压测工具的使用指南

文章目录 1. 写在最前面1.1 Kubernetes 监控1.2 Performance Testing 2. 命令行安装 & 使用2.1 安装2.2 使用2.2.1 默认的例子2.2.2 定制的例子 3. Dashboard 安装 & 使用3.1 安装3.2 使用3.2.1 简单使用3.2.3 依赖的服务介绍 4. 碎碎念5. 参考资料 1. 写在最前面 由于…

我每天如何使用 ChatGPT

我们都清楚互联网的运作方式——充斥着各种“爆款观点”&#xff0c;极端分裂的意见&#xff0c;恶搞和无知现象屡见不鲜。 最近&#xff0c;大家对于人工智能&#xff08;AI&#xff09;特别是大语言模型&#xff08;LLMs&#xff09;和生成式 AI&#xff08;GenAI&#xff0…

Vue+Element(el-switch的使用)+springboot

目录 1、编写模板 2、发送请求 3、后端返数据 1.Controller类 2.interface接口&#xff08;Service层接口&#xff09; 3.Service&#xff08;接口实现&#xff09; 4.interface接口&#xff08;Mapper层接口&#xff09; 5.xml 6.效果 4、el-switch属性 1、编写模板 …

Java_网络编程

一、网络编程概述 网络编程的意思就是编写的应用程序可以与网络上其他设备中的应用程序进行数据交互。 网络编程有什么用呢&#xff1f;这个就不言而喻了&#xff0c;比如我们经常用的微信收发消息就需要用到网络通信的技术、在比如我们打开浏览器可以浏览各种网络、视频等也…

如何在一个集合对象中A排除另外一个集合对象B中A中拥有的数据通用思路,很精妙!

标题是什么意思呢&#xff1f; 假如我有一个集合对象A&#xff0c;数据有1,2,3,4,5,6 另外一个集合对象B&#xff0c;数据有2,4,5 那么在A中排除B拥有的数据就是 最终需要返回的结果就是1,3 那么我们一般一开始的想法其实就是在集合对象中A遍历取到每一个元素&#xff0c;然…

Linux之权限(内容详细,细节满满)

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 Linux 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力 目录 一.前言 二.权限修改的两种方法 …

LeetCode 670 最大交换数

周一&#xff0c;非常冷&#xff0c;大风呼呼的&#xff0c;上班路都走不动。 好消息&#xff0c;马上要过年了。大风吹&#xff0c;天气好。 过年过年&#xff0c;回家过年~ 学生时代的迷茫是不应该存在的&#xff0c;最好的时光应该尽情享受&#xff0c;而不应该自己给加层…

UI设计师主要是做什么的?

由于用户体验越来越受到重视&#xff0c;UI 设计师也成为现代互联网行业不可或缺的职业。他们通过美化和优化软件界面&#xff0c;为用户带来舒适的使用体验&#xff0c;目标是提高用户满意度。本文将对 UI 进行深入分析设计人员的工作职责和 UI 设计人员的工作内容&#xff0c…