一、Nexus
Nexus是由Sonatype公司开发的一款强大的仓库管理软件,主要用于搭建Maven私服,因此也被称为“Maven仓库管理器”。Nexus支持多种仓库类型,包括代理仓库、私有仓库和仓库组,能够满足不同的存储和管理需求。
主要功能与优势
- 仓库管理:Nexus支持多种仓库类型,包括代理仓库、私有仓库和仓库组,允许用户在本地网络中共享和管理依赖项和构件,提高开发效率并节省外部带宽。
- 加速构建过程:作为本地仓库,Nexus可以缓存远程仓库中的组件,减少从远程仓库下载依赖的时间,从而加快构建速度。
- 节省带宽资源:通过使用Nexus私服,可以避免每次构建时都从中央仓库下载相同的依赖,有效节省网络带宽。
- 提高稳定性和安全性: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为例,创建本地代理仓库(也可以创建阿里云、华为云、腾讯云)
创建 proxy仓库
阿里云仓库地址
[https://maven.aliyun.com/repository/public](https://maven.aliyun.com/repository/public)
华为云仓库地址
[https://mirrors.huaweicloud.com/repository/maven/
(https://mirrors.huaweicloud.com/repository/maven/)
之后点击创建,创建 组合仓库
按顺序的目的是:
先寻找本地私服正式jar包;如果没有则找快照、最后再到代理中找
二、配置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”
上传
点击“Extension”,填入相对应的jar包文件类型名称。如上传xxxx.jar,则“Extension”填入“jar”
自定义编辑Group ID(输入英语或数字)、Artifact ID(输入英语或数字)和Version。输入完成后,勾上“Generate a POM file with these coordinates”,点击“Upload”
注:这里设置的id在pom中引入也是用相同的名称
上传完成后,可以点击"view it now"查看
参考链接
https://blog.51cto.com/u_15903651/6540800
Nexus搭建maven私有仓库_nexus搭建maven私有仓库教程-CSDN博客