当前位置: 首页 > news >正文

Maven - Nexus搭建maven私有仓库;上传jar包

一、Nexus

Nexus‌是由Sonatype公司开发的一款强大的仓库管理软件,主要用于搭建Maven私服,因此也被称为“Maven仓库管理器”。Nexus支持多种仓库类型,包括代理仓库、私有仓库和仓库组,能够满足不同的存储和管理需求‌。

主要功能与优势

  1. 仓库管理‌:Nexus支持多种仓库类型,包括代理仓库、私有仓库和仓库组,允许用户在本地网络中共享和管理依赖项和构件,提高开发效率并节省外部带宽‌。
  2. 加速构建过程‌:作为本地仓库,Nexus可以缓存远程仓库中的组件,减少从远程仓库下载依赖的时间,从而加快构建速度‌。
  3. 节省带宽资源‌:通过使用Nexus私服,可以避免每次构建时都从中央仓库下载相同的依赖,有效节省网络带宽‌。
  4. 提高稳定性和安全性‌:Nexus私服可以在中央仓库不可用时提供稳定的服务,确保团队内部的稳定性。同时,Nexus提供了细粒度的用户权限控制,可以限制访问和操作仓库的权限,提高安全性‌。

安装与配置

Nexus可以在多种操作系统上安装,包括Linux和Windows。安装过程通常涉及下载相应版本的安装包,解压到指定目录,并通过友好的Web界面进行配置。此外,Nexus也支持通过Docker镜像的方式进行安装和部署,为不同环境提供了更多的灵活性‌。

使用场景

Nexus广泛应用于各种开发环境中,特别是在需要管理和分发大量软件组件的场合。它可以帮助开发团队减少对外部仓库的依赖,提高构建效率和稳定性。同时,Nexus还支持对构件的上传、下载和搜索进行控制和审计,有助于维护组织内部的安全和合规性‌

(一)下载Nexus

官网地址:Download Nexus Repository Community Edition | Nexus OSS | Sonatype(下载速度比较慢)

下载完成后会获得一个压缩包,解压即可

(二)安装和启动Nexus

1、linux中安装nexus

上传文件夹中的nexus-3.31.1-01-unix.tar.gz到Linux服务器

使用tar -zxvf nexus-3.31.1-01-unix.tar.gz命令解压压缩包

tar -zxvf nexus-3.31.1-01-unix.tar.gz

 解压完成后的文件结构:

进入/nexus/nexus-3.31.1-01/etc 编辑 nexus-default.properties修改nexus端口(也可以不修改,默认端口是8081)

vi nexus-default.properties

编辑完成后,使用./bin/nexus命令启动私库

如果启动失败提示如下:

No suitable Java Virtual Machine could be found on your system.
The version of the JvM must be 1.8.
Please define INSTALL4J_JAVA_HoME to point to a suitable JVM.

是因为没有安装jdk,那么搞一个jdk到服务器上,然后指定一下JAVAHOME目录即可:

注:nexus必须要jdk1.8才行!!!

JDK安装完成后,jdk默认路径在/usr/java/jdk1.8.0_131,在环境变量中配置上即可

修改环境变量:vi /etc/profile

在文件最后一行加上:

export JAVA_HOME=你的jdk文件放置路径      
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}

保存并退出后,使用 source /etc/profile 命令刷新配置文件

刷新后使用java -version查看jdk安装成功

启动nexus

启动Nexus有2种方式:一种是run;一种是 start

./bin/nexus start      后台运行,使用./bin/nexus status可以查看运行状态

./bin/nexus run        前台运行,可以实时查看日志

出现started即为启动成功:

启动成功后访问linux虚拟机的ip+自定义的端口,或者默认端口8081即可查看是否启动成功,出现以下页面,那么即为安装成功

2、windows中安装nexus

默认端口是8081可能会和其他程序端口有冲突,修改nexus端口,可以进入\nexus-3.31.1-01\etc目录,修改nexus-default.properties文件中的port

使用 ./nexus.exe /install nexus安装nexus

安装完成后使用 ./nexus.exe /start启动私库

启动完成后访问localhost:port 访问私库 (localhost:8088)

(三)登录Nexus 

启动成功后 密码会随机生成 在\nexus\sonatype-work\nexus3 目录下有一个admin.password文件中,linux同理

使用这个文件里的密码进行登录,用户名为admin,登录成功后会进行二次验证,输入相同的密码即可

点击next以下是不重要的选择,跟着填就行

注:admin.password文件是一次性的,登录成功改文件会被删除,一定要修改用户密码!!!

(四)Nexus Web参数

nuget-hosted:本地存储;像官方仓库一样提供本地私库功能;hosted有三种方式:Releases、Snapshot、Mixed
(1)Releases: 一般是已经发布的Jar包
(2)Snapshot: 未发布的版本
(3)Mixed:混合的
nuget.org-proxy:提供代理其它仓库的类型
nuget-group:组类型,能够组合多个仓库为一个地址提供服务
maven-central:maven中央库,默认从https://repo1.maven.org/maven2/拉取jar
maven-releases:私库打包发行版jar
maven-snapshots:私库快照(调试版本)jar
maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务,在本地maven基础配置settings.xml中使用

(五)创建仓库

登录之后看到的页面

点击Create repository创建maven代理仓库(proxy类型)

以创建releases为例,创建本地代理仓库(也可以创建阿里云、华为云、腾讯云)

image.png

image.png
image.png

创建 proxy仓库

image.png

阿里云仓库地址

[https://maven.aliyun.com/repository/public](https://maven.aliyun.com/repository/public)

华为云仓库地址

[https://mirrors.huaweicloud.com/repository/maven/

(https://mirrors.huaweicloud.com/repository/maven/)

image.png

之后点击创建,创建 组合仓库

image.png
image.png按顺序的目的是:

先寻找本地私服正式jar包;如果没有则找快照、最后再到代理中找

image.png

二、配置maven;pom文件添加推送代码配置

1、配置maven的settings.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.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"><!-- <localRepository>C:\\Users\\monke\\.m2\\repository</localRepository> --><localRepository>D:\software\apache-maven-3.6.1\repository</localRepository><!--nexus服务器,id自定义,用户名和密码为nexus服务器的账号密码--><servers>  <!--id为对应资源库id-->  <server>  <id>nexus-snapshot-hosted</id><username>admin</username>  <password>nexus</password></server><server>  <id>nexus-hosted</id><username>admin</username>  <password>nexus</password></server>  <server>  <id>nexus</id>  <username>admin</username>  <password>nexus</password></server>   </servers>  <!--组资源库的url地址  id和name自定义,mirrorOf的值设置为central,写死的-->  <mirrors>     <mirror>  <id>nexus</id>  <name>nexus repository</name>  <url>http://IP或域名:8082/repository/nexus-group/</url><mirrorOf>central</mirrorOf>  </mirror>     </mirrors></settings>

2、配置pom.xml文件

<distributionManagement><!--Release类型的托管资源库--><repository><!--id对应nexus仓库的id--><id>nexus-hosted</id><!--自定义名称--><name>Releases</name><!--仓库对应的URL地址:IP或域名均可+端口号--><url>http://IP或域名:8082/repository/nexus-hosted/</url></repository><!--Snapshot类型的托管资源库--><snapshotRepository><!--id对应nexus仓库的id--><id>nexus-snapshot-hosted</id><!--自定义名称--><name>Snapshot</name><!--仓库对应的URL地址:IP或域名均可+端口号--><url>http://IP或域名:8082/repository/nexus-snapshot-hosted/</url></snapshotRepository></distributionManagement>

三、 上传jar包

1、mvn deploy命令

点击Maven-Lifecycle-deploy

或者mvn命令

mvn deploy:deploy-file
-DgroupId=对应pom中的groupId
-DartifactId=对应pom中的artifactId
-Dversion=对应pom中的version
-Dpackaging=对应pom中的packaging
-Dfile=文件路径
-DpomFile=表示需要上传的jar包对应的pom文件的绝对路径
-Durl=上传的服务器
-DrepositoryId=服务器的表示ID,setting.xml文件中配置的serverId,用来关联私服的用户名和密码

mvn命令举例

mvn deploy:deploy-file 
-DgroupId=com.tfjybj 
-DartifactId=metaverse-gateway 
-Dversion=1.0-SNAPSHOT 
-Dpackaging=pom 
-Dfile=D:\project\Maven\apache-maven-3.6.1\reponsitory\com\tfjybj\metaverse-gateway\1.0-SNAPSHOT\metaverse-gateway-1.0-SNAPSHOT.pom
-Durl=http://IP或域名:8082/repository/nexus-snapshot-hosted/
-DrepositoryId=nexus-snapshot-hosted

2、Nexus Web界面Upload

点击右侧的“Upload”,点击“maven-releases”

image.png
上传

点击“Extension”,填入相对应的jar包文件类型名称。如上传xxxx.jar,则“Extension”填入“jar”

自定义编辑Group ID(输入英语或数字)、Artifact ID(输入英语或数字)和Version。输入完成后,勾上“Generate a POM file with these coordinates”,点击“Upload”

注:这里设置的id在pom中引入也是用相同的名称

image.png

上传完成后,可以点击"view it now"查看

参考链接

https://blog.51cto.com/u_15903651/6540800

Nexus搭建maven私有仓库_nexus搭建maven私有仓库教程-CSDN博客

maven推送jar包到nexus_nexus 查看最近 1个月跟新的jar包-CSDN博客

maven、nexus超详细Maven搭建私库、上传jar包和使用_maven nexus-CSDN博客

http://www.dtcms.com/a/361732.html

相关文章:

  • 20250829的学习笔记
  • OPENCV 基于旋转矩阵 旋转Point2f
  • 代码随想录二刷之“回溯”~GO
  • 机器翻译:python库translatepy的详细使用(集成了多种翻译服务)
  • Spring框架入门:从IoC到AOP
  • 爬虫实战练习
  • 如何在Github中创建仓库?如何将本地项目上传到GitHub中?
  • IDEA Spring属性注解依赖注入的警告 Field injection is not recommended 异常解决方案
  • Python绘制多彩多角星实战
  • MyBatis 性能优化最佳实践:从 SQL 到连接池的全面调优指南
  • 链表相关OJ题
  • MongoDB 备份与恢复:mongodump 和 mongorestore 实战
  • NestJS 3 分钟搭好 MySQL + MongoDB,CRUD 复制粘贴直接运行
  • Flutter Container 阴影设置指南 2025版
  • Flutter 完全组件化的项目结构设计实践
  • 复刻elementUI的步骤条Steps
  • 【架构师干货】系统架构设计
  • Pytorch的CUDA版本安装使用教程
  • XGBoost学习笔记
  • docker 数据管理
  • 徐州服务器:机柜租用具体包含哪些内容?
  • 『Java』把Java项目打成Jar包,并引用项目外的Jar依赖
  • Spring Boot 常用注解有哪些?
  • 【MySQL】进阶技术详解
  • 机器学习-时序预测2
  • uniapp使用uview UI,自定义级联选择组件
  • 正则表达式与grep文本过滤详解
  • 盲盒抽谷机小程序开发:如何用3D技术重构沉浸式体验?
  • 【Proteus仿真】8*8LED点阵控制系列仿真——循环显示数字/按键控制显示图案
  • 虚拟机- + linux