使用Nexus搭建远程maven仓库

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博客

相关推荐
n33(NK)11 分钟前
【算法基础】冒泡排序算法 - JAVA
java·算法·排序算法
小园子的小菜13 分钟前
探索 Disruptor:高性能并发框架的奥秘
java
碎梦归途4 小时前
23种设计模式-行为型模式之状态模式(Java版本)
java·jvm·设计模式·状态模式·软考·软件设计师·行为模式
豆沙沙包?6 小时前
2025年- H16-Lc124-169.多数元素(技巧)---java版
java·开发语言
zhangxueyi6 小时前
Java实现基数排序算法
java·数据结构·算法
Another Iso8 小时前
同时启动俩个tomcat压缩版
java·tomcat
华纳云IDC服务商9 小时前
华纳云:centos如何实现JSP页面的动态加载
java·linux·centos
碎梦归途9 小时前
23种设计模式-行为型模式之访问者模式(Java版本)
java·开发语言·jvm·设计模式·软考·软件设计师·行为型模式
Demons_kirit9 小时前
LeetCode LCP40 心算挑战题解
java·数据结构·算法·leetcode·职场和发展
Jiaberrr9 小时前
uniapp 实现低功耗蓝牙连接并读写数据实战指南
java·前端·javascript·vue.js·struts·uni-app