1、Nexus介绍
Nexus 是 Sonatype 公司的一款用于搭建私服的产品,使用非常广泛。在早期,我们都拿Nexus当maven私服仓库,后来,随着版本不断更新,它支持的数据类型越来越多,比如npm仓库,nuget仓库,ruby仓库,docker镜像仓库等等。
npm仓库:用于前端开发框架React、Vue、Angular等的依赖管理。
nuget仓库:用于.Net的依赖管理。如asp.net、winforms等。
ruby仓库:用于Ruby on Rails框架的依赖管理。
docker镜像仓库:将容器打包成镜像,存储镜像。镜像通常由"代码、运行库、配置文件"组成。
2、Nexus下载安装
安装包下载网址:https://www.sonatype.com/products/sonatype-nexus-oss-download
历史版本查看网址:https://help.sonatype.com/en/download-archives---repository-manager-3.html
3、Nexus安装
我是安装在本地的一个Ubuntu虚拟机上的。因为Nexus是用java开发的,因此需先安装java环境。
3.1、安装jdk
可以通过uname -m命令查看Ubuntu位数,并下载对应的jdk。
Java Archive Downloads - Java SE 8u211 and later | Oracle 中国

通过Xftp把java安装包上传到服务器上。

bash
#解压
tar -zxvf jdk-8u441-linux-x64.tar.gz
#编辑配置文件profile
vim /etc/profile
#在配置文件中增加jdk环境变量
#jdk配置环境变量
export JAVA_HOME=/home/wulc/Desktop/Java/jdk1.8.0_441
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}
#wq保存
#让profile文件追加的jdk环境变量生效
source /etc/profile
#验证
java -version
3.2、安装Nexus
我下载的是:Download Archives - Repository Manager 3
通过Xftp把Nexus安装包上传到linux服务器上。

bash
#解压
tar -zxvf nexus-3.61.0-02-unix.tar.gz

nexus-3.61.0-02是系统包,是nexus运行程序。
sonatype-work是nexus的工作区间,仓库文件存储位置。
bash
#进入nexus-3.61.0-02下的bin目录
cd nexus-3.61.0-02
cd bin
#启动nexus
./nexus start
#查看启动状态
./nexus status
#停止nexus
./nexus stop

访问:nexus-3.61.0-02/etc/nexus-default.properties,可以修改nexus启动端口号。
bash
vim nexus-default.properties

浏览器输入:http://192.168.10.104:8081/

登录一下nexus


4、Nexus使用
4.1、上传包到Maven仓库
可以直接在页面上上传,不推荐这么用,一般上传都是在项目里面maven setting配置,再上传的。而且通常我们上传的maven包,里面不仅仅只包含一个jar包,还有很多附属数据。

仓库管理。这里可以看到nexus的所有仓库。
仓库主要分为三种类型:
- proxy,代理仓库,也就是对外部仓库的代理,这个仓库是只读的,当PC端访问nexus库,没有这个依赖的时候,会请求proxy库配置的远程仓库,如远程仓库有,会下载到nexus(一个人从远程中央仓库下载好了依赖,其他人再次访问,无需访问远程仓库,直接从nexus可以获取)。默认使用的maven的仓库,访问速度比较慢,可以更换为国内大型镜像仓库(比如阿里,腾讯等等,阿里nexus仓库地址:http://maven.aliyun.com/repository/public)。
- hosted,本地托管仓库,也就是所谓私库了,可以上传本地jar包到这个仓库。在创建的时候,需要注意:将 Deployment Policy 改成 Allow Redeploy(允许重复发布,覆盖同版本的jar包)。
- group,仓库组,这是一个容器,它可以包含多个proxy,hosted或其他group仓库,它的作用就是让开发人员引用的时候只要填一个URL,访问配置在该group下所有的库,这也是只读的。
hosted仓库存储类型分三种:
-
snapshot,存储快照(未发布的版本)。开发中的不稳定版本(如
1.0.0-SNAPSHOT
),允许重复部署。启用Allow redeploy
选项。 -
releases,存储发布的版本。稳定的正式版本(如1.0.0),不可重复部署,要设置为禁止覆盖,在Nexus中需关闭
Allow redeploy
选项(防止意外覆盖)。 -
mixed,混合存储模式。同时允许Release和Snapshot版本,比较灵活,要确保版本号命名规范(如强制 -SNAPSHOT后缀)。
4.2、创建仓库
Step1、先创建一个存储位置:Blob Stores


Step2、创建仓库


Step3、创建hosted仓库

Step4、创建proxy仓库

对新建的两个仓库进行分组。


4.3、Maven配置和使用
Step1、上传jar包到nexus仓库
setting.xml配置
在pom.xml里面新增配置
XML
<!-- 上传需要的配置到nexus仓库 -->
<distributionManagement>
<repository>
<id>wulc-nexus</id>
<!-- 正式版-->
<url>http://192.168.10.104:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>wulc-nexus</id>
<!-- 快照版-->
<url>http://192.168.10.104:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
会根据上方<version>1.0-SNAPSHOT</version>中的版本号去下载对应的jar包。
pom.xml文件配置好后,执行mvn deploy对项目进行打包并上传。

打包上传成功

因为这个项目的<version>是1.0-SNAPSHOT,所以可以在snapshots仓库看到刚才打包上传的项目。

Step2、使用nexus中的jar包

在pom.xml文件中新增以下配置
XML
<!-- 拉取需要的配置 -->
<repositories>
<repository>
<!-- id和name可以随便配置,因为在setting文件中配置过了-->
<id>wulc-nexus</id>
<name>wulc-nexus</name>
<url>http://192.168.10.104:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
XML
<dependency>
<groupId>org.example</groupId>
<artifactId>TestAopAuth</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

于是我们就可以直接在wulc-test这个项目中使用TestAopAuth提供的功能了。

5、总结
在企业开发的过程中,不是所有公司都能直接访问外网。在这样情况下,就需要在局域网内找一台有外网访问权限的服务器,搭建nexus私服仓库,开发人员连到这台私服上,通过搭建的nexus私服访问远程仓库。内网相比外网更安全,外网可能会受到公开的网络攻击,并且传输速度也远低于内网。
有一些我们企业中自研的第三方jar包也会上传到maven仓库供其他同事使用,若上传至公网,数据会有泄露的风险,若在私服,数据安全性会大大提高!
6、参考资料
【保姆级教程】nexus私服仓库搭建,如何使用,如何配置,页面各种功能介绍及清除策略_哔哩哔哩_bilibili【ubuntu连接xshell最新2024史上最全小白教程】_xshell连接ubuntu-CSDN博客