上传jar包到内网Nexus私服仓库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_38001814/article/details/89494078

目录

前言

一、私服简介

二、Nexus仓库简介

2.1、Nexus仓库类型介绍

2.2、Nexus本地仓库介绍

三、上传jar包到Nexus私服

3.1、单个上传jar包

3.2、批量上传jar包


前言

由于有些大公司网络环境往往很复杂,公司内部一般存在一个大的局域网,即内网环境,由于大公司的内网环境往往连不上外网,所以当maven私服库搭建在这种内网时往往访问不到外网下的中央仓库(例如阿里云镜像),导致获取不到对应的jar包而报错,因此只能选择手动上传jar包至私服库,本文适合内网下无法连上外网的情况

一、私服简介

私服是架设在局域网的一种特殊的远程仓库,用于代理远程仓库及部署第三方构建。有了私服之后,maven会先请求私服库,若私服库存在,则直接下载到本地仓库;反之,maven会先从远程仓库下载至私服,再从私服下载至本地仓库,下面是一个简单的架构图:

一般比较常用的私服库为Sonatype Nexus

二、Nexus仓库简介

下载安装步骤省略,当我们进入Nexus仓库时会有如下画面:

点击上图左边菜单栏中的Repositories,即可显示如下图所示的仓库列表:

2.1、Nexus仓库类型介绍

可以看到每个仓库后面均有个Type属性,下面则对该参数进行解析:

  • hosted:本地仓库,通常我们会部署自己的构件到这一类型的仓库,比如公司的第二方库。
  • proxy:代理仓库,它们被用来代理远程的公共仓库,如maven中央仓库。
  • group:仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。

下面是一张更清晰的仓库组与仓库之间的关系图:

点击public库,如下图,我们可以看到其作为一个仓库组,管理着如下四个仓库,这也就意味着public包含了这四个库,一旦往3rd第三方库中上传了jar包,在public库中一样能看到,若想将某个仓库去除或增加仓库只需点击对应的箭头即可

2.2、Nexus本地仓库介绍

前面讲到类型为hosted的为本地仓库,Nexus预置了三个本地仓库:Releases、Snapshots、3rd Party。下面分别介绍这三种仓库

  • Releases:稳定仓库,这里存放我们项目中发布版本的构建,通常是Release版本的,比如在产品迭代过程中对外发布的包,其中的各包版本即为Release
  • Snapshots:快照仓库,主要是用来发布那些非Release版本,即我们在开发过程需临时发布一个版本的包用于给你的同事依赖以继续下一个功能的开发,该临时版本往往是不稳定的,但该仓库却非常的有用,但是需要注意的是,发布时一定要将临时版本去掉!
  • 3rd Party:第三方仓库,这里的第三方库不同于中央仓库,这里的是指你可以自己上传包的第三方库,往往用于上传那些在中央仓库中找不到的包或者是内网环境下无法连接中央仓库需要手动导包进去的情况,也只有这一个仓库我们可以手动上传

 

三、上传jar包到Nexus私服

前面啰嗦了这么多,也算是到本文重点了,这里所说的jar包并非是第三方jar包,而是因为私服库连不了外网,只能手动给其仓库上传自己开发所需的jar包,因此本文并不是采用mvn deploy的方式上传。一般来说可根据上传jar包的数量分为两种形式:单个上传和批量上传,如果库中已存在同版本jar包,或是已存在同版本pom文件而无该版本的jar包,再次上传均会覆盖

3.1、单个上传jar包

单个上传jar包的好处是上传jar包的同时会直接帮你建好索引,该索引可类比于数据库的索引,当你下载该包时可快速定位并提供下载服务。单个上传jar包需在Nexus的管理界面进行操作,如下图,点击3rd party,并单击Artifact Upload开始上传jar包:

上传时需选择对应的GAV Definition,如果你只有单单的一个jar包,那就选择GAV方式;如果存在pom文件,那么使用pom文件的形式上传,可以省去一些手动的配置,一般在本地编译后即会存在pom文件及jar包,下图为上传前的某个jar包的详细信息:

采用GAV形式上传jar包:

1、编辑jar包的各必需信息,如下图圈红的都为必填信息,依照maven依赖的格式根据jar包实际信息定义即可,如下图

2、选择上面所定义信息的jar包,选择完Nexus私服则自动会解析其名称和格式,如下图

3、然点击上图中Add Artiface,将该jar包添加进去,此时原信息则会自动清空,如下图,然后上传即可,注意:这一步Add操作非常重要,否则直接点上传操作会出现jar包始终没有,只有pom文件

4、上传完之后在库中即能找到刚上传的dubbo包,如下图

5、同时你可以在库的索引中也能找到刚上传jar包所生成的索引文件,这里注意下,索引文件格式可以jar也可以是pom,如下图

采用pom形式上传jar包:

1、选择pom形式,然后上传该jar包的pom文件,如下图

2、同上面GAV形式的的2 3 4 5步骤,能在仓库和索引中看到即表明上传成功

3.2、批量上传jar包

这里需要进入安装Nexus的后台,win下通过xftp,mac下通过transmit(transmit使用方式:mac下类似xftp的远程文件传输的可视化工具Transmit)进入其第三方仓库路径,如:/home/nexus/sonatype-work/nexus/storage/thirdparty,然后将你本地已准备的一大堆jar包批量传进去即可,以防万一可以先对库做个备份。

这里需要注意的是,上传完jar包之后,Nexus并不会自动生成各jar包的索引,所以如果你有刚上传jar包的那些索引文件,可以一并上传到对应仓库的索引路径下,例如:/home/nexus/sonatype-work/nexus/indexer/thirdparty-ctx

否则索引没有导致下载jar包的时候速度可能会过慢,但并不会影响编译。关于这个索引文件如何拿到,其实老夫也不是很清楚,我了解的就是mvn deploy时会自动生成索引,以及联网下载和单个上传jar包都会生成,所以批量上传jar包时,可以顺带拷贝外网maven仓库下的索引文件一并上传,这是最好的解决方案。

猜你喜欢

转载自blog.csdn.net/m0_38001814/article/details/89494078