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

相关推荐
Musennn9 分钟前
leetcode93.复原IP地址:回溯算法中段控制与前导零处理的深度解析
java·数据结构·算法·leetcode
用户05956611920931 分钟前
现代应用中 Java 集合框架的核心技术与实践解析
java·后端
t198751281 小时前
Java连接Redis和基础操作命令
java·开发语言·redis
秋名RG1 小时前
深入理解享元模式:用Java实现高效对象共享
java·开发语言·享元模式
master-dragon1 小时前
设计模式-观察者模式
java·观察者模式·设计模式
小白本无忧1 小时前
PHP 垃圾回收高级特性
android·java·php
何中应1 小时前
【设计模式-3.5】结构型——装饰器模式
java·设计模式·装饰器模式
MonKingWD1 小时前
【JVM】Java程序运行时数据区
java·jvm
杀神lwz1 小时前
JVM学习(六)--垃圾回收
java·jvm·学习
一刀到底2111 小时前
java 微服务中,微服务相互调用 feign 和flux 如何选择
java·开发语言·微服务