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

使用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安装包上传到服务器上。

#解压
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服务器上。

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

        nexus-3.61.0-02是系统包,是nexus运行程序。

        sonatype-work是nexus的工作区间,仓库文件存储位置。

#进入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启动端口号。  

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里面新增配置

    <!-- 上传需要的配置到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文件中新增以下配置

<!-- 拉取需要的配置 --><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>
<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博客

相关文章:

  • MySQL零基础入门:Ubuntu环境安装与操作精解
  • AWK 文本分析工具核心总结
  • HashMap,高效 哈希
  • Python生活手册-文件二进制:从快递柜到生鲜冷链的数据保鲜术
  • 业务流程BPM能力框架体系及华为中兴流程变革案例P83(83页PPT)(文末有下载方式)
  • python拜占庭将军
  • 【大模型实战篇】华为信创环境采用vllm部署QwQ-32B模型
  • 部署.NET6.0 Web API项目到Docker
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的电商直播流量转化路径研究
  • 【Linux】Makefile
  • AI大模型基础设施:主流的几款开源AI大语言模型的本地部署成本
  • kafka学习笔记(四、生产者(客户端)深入研究(二)——消费者协调器与_consumer_offsets剖析)
  • windows系统搭建自己的ftp服务器,保姆级教程(用户验证+无验证)
  • 简单的Qwen3的本地部署、分析与常见报错
  • CSS学习笔记14——移动端相关知识(rem,媒体查询,less)
  • RDMA高性能网络通信实践
  • 计算机视觉(CV)技术的优势和挑战(本片为InsCode)
  • 【分享】deepseek 超强ai助手 1.1.8最新版 不卡顿
  • jenkins 远程执行 定时 执行shell
  • SQL数据库系统全解析:从入门到实践
  • 遍体鳞伤就是击不倒,这是国米老男孩最后的倔强
  • 4月一二线城市新房价格环比上涨,沪杭涨幅居百城前列
  • 铁路上海站迎五一假期客流最高峰,今日预计发送77万人次
  • 全文丨中华人民共和国传染病防治法
  • 摩根大通任命杜峯为亚太区副主席,加码中国市场业务布局
  • 南部战区位南海海域进行例行巡航