Nexus存储库管理器搭建-Maven私服

news2024/11/20 18:32:55

写在前面

🍁个人主页:微枫Micromaple

✨本期专栏:《0到1项目搭建》欢迎订阅学习~

📌源码获取:GitCode、GitHub、码云Gitee 持续更新中,别忘了 star 喔~

在企业开发过程中,就比如说我们Java程序员,一般都是使用Spring或者是SpringBoot项目进行开发的,基本上都是基于Maven或者是Gradle构建的项目,如果说我们使用的Maven仓库是中央仓库的话,在企业内部协同开发的时候,会带来诸多不便。例如,当我们需要协同开发时,难免会对Jar包进行管理,不可能将我们的Jar包上传至中央仓库去,所以我们需要搭建属于内部的Maven仓库。Maven私服仓库也有者诸多好处。本文详细讲述了 Maven私服的搭建、Jar包部署以及SpringBoot配置。

目录

    • 写在前面
    • 一、概述
    • 二、为什么要使用Maven私服仓库
    • 三、搭建Nexus
    • 四、SpringBoot整合
      • 4.1、pom.xml配置
      • 4.2、测试部署
    • 五、上传部署Jar包

一、概述

在这里插入图片描述

Nexus 是一个存储库管理器,极大地简化了内部仓库的维护和外部仓库的访问。

有非常简单便捷的用户操作界面,方便对Nexus操作及管理。

在 Nexus 3.0 版本后,增加了对 Docker、NetGet、npm、Bower的支持。

二、为什么要使用Maven私服仓库

大家可能会有一个疑问,为啥要搭建Maven私服呢?使用官方的Maven仓库不就可以吗?而且国内也有镜像加速地址,比如阿里等。而我们去搭建一个Maven私服,需要在服务器单独进行搭建,还要进行维护。

针对这些问题,下面是使用Maven私服的好处:

  • 托管内部存储库: 可以共享内部依赖项,以方便将依赖项安装在每个开发人员的本地存储库中。

  • 加速Maven构建: 当在 Maven 中运行多模块项目时,如果项目依赖于几个 SNAPSHOT,或者没有指定插件版本,Maven 可能必须向远程存储库发出数十到数百个请求。安装 Nexus 的本地实例后将构建时间大大的缩减了。

  • 节省带宽: 如果没有 Maven 私服,开发人员会浪费带宽一遍又一遍的从中央仓库下载相同的文件。使用 Nexus 来保留本地缓存将节省大量带宽。

  • 控制和审计: 可以有效的控制开发团队将使用哪些依赖项。

  • 可上传部署第三方Jar: 可以方便的上传第三方Jar包,并对其进行管理。

  • 可预测性和稳定性: 依靠中央仓库进行日常运营也意味着依赖于互联网连接,如果有 Nexus ,则可以确保即使失去互联网连接,构建工作也可以继续进行。

三、搭建Nexus

这里使用docker来搭建Nexus。

1)、创建文件夹

mkdir -p /usr/local/docker/nexus

2)、创建docker-compose文件

vi /usr/local/docker/nexus/docker-compose.yml

docker-compose.yml内容如下:

version: '3.1'
services:
  nexus:
    restart: always
    image: sonatype/nexus3
    container_name: nexus
    privileged: true
    ports:
      - 8081:8081
    volumes:
      - ./data:/nexus-data

3)、启动

启动命令

docker-compose up -d

如果遇到文件夹权限问题,使用命令更改文件夹权限chmod -R 777 data,然后在重新启动

4)、访问

启动完成后,浏览器访问http://IP:8081/,效果如下:

在这里插入图片描述

5)、登录

登录Nexus,点击右上角 Sign in,第一次登录会提示admin的密码在哪,根据提示去相关目录查看。docker-compose中映射nexus-data目录为/usr/local/docker/nexus/data目录,所以我们在data目录去找admin.password文件即可看到密码了。
在这里插入图片描述
在这里插入图片描述

查看密码

$ cat admin.password 
1cf97ae1-270f-47e5-8c83-f5af04af34af

登录后会提示设置新的密码,设置一个记得住的密码即可。

四、SpringBoot整合

my-project项目为例。

4.1、pom.xml配置

有一个统一的依赖管理模块my-project-dependencies,在pom.xml中增加部署服务器的 Maven 节点内容以及仓库地址,内容如下:

<!-- 部署服务器的 Maven 节点 -->
<distributionManagement>
	<repository>
		<id>nexus-releases</id>
		<name>Nexus Release Repository</name>
		<url>http://192.168.110.158:8081/repository/maven-releases/</url>
	</repository>
	<snapshotRepository>
		<id>nexus-snapshots</id>
		<name>Nexus Snapshot Repository</name>
		<url>http://192.168.110.158:8081/repository/maven-snapshots/</url>
	</snapshotRepository>
</distributionManagement>

<repositories>
	<repository>
		<id>nexus</id>
		<name>Nexus Repository</name>
		<url>http://192.168.110.158:8081/repository/maven-public/</url>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
		<releases>
			<enabled>true</enabled>
		</releases>
	</repository>

	<repository>
		<id>aliyun-repos</id>
		<name>Aliyun Repository</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</repository>

	<repository>
		<id>sonatype-repos</id>
		<name>Sonatype Repository</name>
		<url>https://oss.sonatype.org/content/groups/public</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</repository>
	<repository>
		<id>sonatype-repos-s</id>
		<name>Sonatype Repository</name>
		<url>https://oss.sonatype.org/content/repositories/snapshots</url>
		<releases>
			<enabled>false</enabled>
		</releases>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
	</repository>

	<repository>
		<id>spring-snapshots</id>
		<name>Spring Snapshots</name>
		<url>https://repo.spring.io/snapshot</url>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
	</repository>
	<repository>
		<id>spring-milestones</id>
		<name>Spring Milestones</name>
		<url>https://repo.spring.io/milestone</url>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</repository>
</repositories>

<pluginRepositories>
	<pluginRepository>
		<id>nexus</id>
		<name>Nexus Plugin Repository</name>
		<url>http://192.168.110.158:8081/repository/maven-public/</url>
		<snapshots>
			<enabled>true</enabled>
		</snapshots>
		<releases>
			<enabled>true</enabled>
		</releases>
	</pluginRepository>

	<pluginRepository>
		<id>aliyun-repos</id>
		<name>Aliyun Repository</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>
		<releases>
			<enabled>true</enabled>
		</releases>
		<snapshots>
			<enabled>false</enabled>
		</snapshots>
	</pluginRepository>
</pluginRepositories>

将IP地址更改为自己的就可以了

4.2、测试部署

使用dos窗口进入my-project-dependencies目录下,执行部署命令

mvn deploy

在这里插入图片描述

此时出现失败,关键信息Return code is: 401, ReasonPhrase: Unauthorized. ,错误问题是未授权

我们打开我们配置的Maven的settings.xml,在servers节点增加如下配置

<server>
  <id>nexus-releases</id>
  <username>admin</username>
  <password>123456</password>
</server>
<server>
  <id>nexus-snapshots</id>
  <username>admin</username>
  <password>123456</password>
</server>
  • id: 与构建项目的pom.xml中的repository的id一致。
  • username: 部署用户(可在Nexus中单独创建一个用户专门拿来部署,这里直接使用admin)
  • password: 登录密码

配置好这些后,先将原先的命令窗口关闭,打开一个新的,在执行一次部署命令

mvn deploy

在这里插入图片描述

部署成功,接着我们打开Nexus端查看部署上来的项目

在这里插入图片描述

在 Maven 私服中也可以看到,大功告成~

五、上传部署Jar包

在开发过程中,我们可能会单独的对Jar进行管理,而我们手中又只有一个Jar文件。这时,我们需要使用到Nexus的上传功能

1)、点击Upload->选择需要上传的仓库

在这里插入图片描述

2)、上传Jar包,填写表单信息

在这里插入图片描述

3)、上传成功
在这里插入图片描述

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

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

相关文章

Linux内核中ideapad-laptop.c文件全解析10

接前一篇文章《Linux内核中ideapad-laptop.c文件全解析9》&#xff0c;地址为&#xff1a; Linux内核中ideapad-laptop.c文件全解析9_蓝天居士的博客-CSDN博客 本文针对于上一篇文章提到的配置选项"CONFIG_LEDS_BRIGHTNESS_HW_CHANGED"进行详细分析。在make menuco…

python -- PyQt5(designer)中文详细教程(五)对话框

对话框 对话框是⼀个现代GUI应用不可或缺的⼀部分。对话是两个人之间的交流&#xff0c;对话框就是⼈与电脑之 间的对话。对话框用来输⼊数据&#xff0c;修改数据&#xff0c;修改应用设置等等。 输入文字 QInputDialog 提供了⼀个简单方便的对话框&#xff0c;可以输入字符…

SpringBoot 玩一玩代码混淆,防止反编译代码泄露!

编译 简单就是把代码跑一哈&#xff0c;然后我们的代码 .java文件 就被编译成了 .class 文件 反编译 就是针对编译生成的 jar/war 包 里面的 .class 文件 逆向还原回来&#xff0c;可以看到你的代码写的啥。 比较常用的反编译工具 JD-GUI &#xff0c;直接把编译好的jar丢进…

深度学习 LSTM长短期记忆网络原理与Pytorch手写数字识别

深度学习 LSTM长短期记忆网络原理与Pytorch手写数字识别一、前言二、网络结构二、可解释性三、记忆主线四、遗忘门五、输入门六、输出门七、手写数字识别实战7.1 引入依赖库7.2 加载数据7.3 迭代训练7.4 数据验证八、参考资料一、前言 基本的RNN存在梯度消失和梯度爆炸问题&am…

毕业设计-基于机器视觉的深蹲检测识别-TensorFlow-opencv

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

LeetCode刷题复盘笔记—一文搞懂完全背包之377. 组合总和 Ⅳ问题(动态规划系列第十二篇)

今日主要总结一下动态规划完全背包的一道题目&#xff0c;377. 组合总和 Ⅳ 题目&#xff1a;377. 组合总和 Ⅳ Leetcode题目地址 题目描述&#xff1a; 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的…

[附源码]计算机毕业设计基于web的羽毛球管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Python软件编程等级考试一级——20220915

Python软件编程等级考试一级——20220915理论单选题判断题实操第一题第二题理论 单选题 1、表达式len(“学史明理增信 &#xff0c;读史终生受益”) > len(" reading history will benefit you ")的结果是&#xff1f; A、0 B、True C、False D、1 2、表达…

SLMi333国内首款兼容光耦带DESAT保护功能的隔离式栅极驱动器

SLMi333国内首款兼容光耦带DESAT保护功能的隔离式栅极驱动器,内置快速去饱和&#xff08;DESAT&#xff09;故障检测功能&#xff0c;米勒钳位功能&#xff0c;漏极开路故障反馈&#xff0c;软关断功能以及可选择的自恢复模式&#xff0c;兼容光耦隔离驱动器&#xff0c;一款高…

安装mongodb6

一、安装mongodb6.0.2 1.官网下载社区版 https://www.mongodb.com/ 2.双击下载的文件&#xff0c;按步骤安装 选择custom 自定义安装 改一下安装地址&#xff0c;路径最好不要带空格 Install MongoD as a Service 作为服务方式安装 Run the service as Network Service…

SuperMap iClient for Leaflet对EPSG:4509图加载滑动查询

作者&#xff1a;John SuperMap iClient for Leaflet对EPSG:4509地图加载&滑动查询 在WebGIS开发使用中&#xff0c;我们会遇到地图显示不了&#xff0c;以及查询到数据显示不出的问题&#xff0c;因此本文就以EPSG:4509为例介绍该坐标系地图加载和查询。 1、EPSG:4509地图…

数据分析案例:基于水色图像的水质识别

大数据分析课程、大数据分析班、大数据案例等&#xff0c;围绕大数据展开讲解。 数据分析案例&#xff1a;基于水色图像的水质识别&#xff0c;通过学习本案例&#xff0c;可以掌握图像切割、特征提取、模型构建和模型评价的主要方法和技能&#xff0c;并为后续相关课程学习及将…

蚂蚁面试官:Zookeeper 的选举流程是怎样的?我当场懵逼了

​ 编辑切换为居中 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 面试经常会遇到面试官问 Zookeeper 的选举原理&#xff0c;我心想&#xff0c;问这些有啥用吗&#xff1f;又不要我造火箭&#xff01; 每次面试也只知道个大概&#xff0c;并没有深究…

分布式电源接入对配电网影响的研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

vue3 + element 从0到1搭建前端基础框架

一、框架搭建 框架代码 个人博客 往往从0到1开发项目时发觉无从下手&#xff0c;或者很可能一步一个坑&#xff0c;因为大多基础框架公司已经搭建完毕的&#xff0c;新加入的成员也都是在此基础上进行功能模块的拓展。网上也鲜有详尽的全流程参考&#xff0c;多是某个局部功能的…

【Vue】webpack的基本使用

✍️ 作者简介: 前端新手学习中。 &#x1f482; 作者主页: 作者主页查看更多前端教学 &#x1f393; 专栏分享&#xff1a;css重难点教学 Node.js教学 从头开始学习 ajax学习 文章目录webpack的学习目标前端工程化 小白眼中的前端开发 vs 实际的前端开发 什么是前端工程…

CISP考试大纲/范围

CISP考试主要是考CISP知识体系大纲&#xff0c;分别为信息安全保障、信息安全技术、信息安全管理、信息安全工程和信息安全标准法规这五大知识类&#xff0c;每个知识类根据其逻辑划分为多个知识体&#xff0c;每个知识体包含多个知识域&#xff0c;每个知识域由一个或多个知识…

Java项目:SSM失物招领管理系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 主要功能包括&#xff1a; 用户发布失物&#xff0c;或者招领失物&#xff0c;管理员对用户&#xff0c;失物信息进行增删改查。 环境需要 1…

新课程教学杂志新课程教学杂志社新课程教学编辑部2022年第19期目录

核心素养 核心素养视域下的历史教学设计——以“清朝君主专制的强化”为例 王威; 1-3 新中考背景下文本分析能力与核心素养的培育 黄嫄; 4-5《新课程教学》投稿&#xff1a;cn7kantougao163.com 基于核心素养的物理教学评价改良 李红; 6-7 初中语文综合性学习的…

Metabase学习教程:系统管理-6

Metabase可扩展性 扩展Metabase以支持更多人和数据库的最佳实践。 Metabase是一个可扩展的、经过实战的软件&#xff0c;被成千上万的公司用来提供高质量的自助服务分析。它通过水平扩展支持高可用性&#xff0c;而且它是开箱即用的高效工具&#xff1a;一台拥有4gb内存的单核…