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

相关推荐
xcl09252 小时前
北京24小时自助健身房系统软件开发实战:从架构到部署全流程指南
java·spring boot·架构
一 乐4 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
卓怡学长4 小时前
w214基于jsp知道特产网
java·intellij-idea
步行cgn4 小时前
Spring 注解使用详解
java·spring
一条小小yu5 小时前
Spring IoC的理解
java·后端·spring
落魄实习生5 小时前
Agent Scope Java 2.x 系列【7】工具使用
java·开发语言·ai
旺仔学长 哈哈5 小时前
springboot钓鱼爱好者交流平台APP设计与实现
java·spring boot·mysql·充电桩管理系统
自强的小白7 小时前
核心功能(Service接口)
java·mybatis
乌暮7 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习