Nexus私服仓库

发布于 2021-11-09  2.73k 次阅读


一,私服仓库的应用场景

私服主要应用在多模块开发过程中,中央仓库主要存放着开源的框架或软件,假如企业开发了一个项目这个项目有N个模块,这些模块由不同的程序员进行开发,模块之间需要相互调用,这时本地库和中央仓库都没有办法解决

  • 本地仓库:无法解决不同机器开发模块之间的调用
  • 中央仓库:无法存储有版权的资源

而私服就可以很好应对这样的场景,它由于私人/企业进行搭建,主要用于内部使用,它介于本地仓库和中央仓库之间

私服仓库的作用:解决企业多模块开发存储依赖难题

私服的仓库分类:

  • 宿主仓库hosted:保存无法从中央仓库获取的资源,如自主研发项目,第三方非开源项目
  • 代理仓库proxy:代理远程中央仓库
  • 仓库组group:将若干个仓库组成一个群组,简化配置,仓库组不能保存资源

私服仓库的具体产品有很多,一般都使用nexus来搭建私服,阿里云的maven镜像仓库也是使用这个私服软件

二,Nexus私服的安装启动(windowns)

一,Nexua的下载

Nexus是Sonatype公司的一款maven私服产品

下载地址:https://help.sonatype.com/repomanager3/download/download-archives---repository-manager-3

我在官网下载总是404,建议下载一个迅雷通过迅雷下载资源(我通过这种方式下载的)

二, 安装后的目录结构

Nexus目录主要分为两个:

  • nexus-3.34.1-01:程序安装目录
  • sonatype-work:工作目录

1,安装目录:

2,工作目录

三,启动nexus

启动访问分三步:

  • 进入安装目录的bin路径中
  • 运行命令:nexus /run nexus
  • 访问:localhost:8081

修改基础配置信息:

  • 安装路径下的etc目录中nexus-default.properties文件保存有nexus基础配置信息,如:端口,主机地址等

修改服务器运行配置信息:

  • 安装路径下bin目录中nexus.vmoptions文件保存有nexus服务器启动对应的配置信息,如:默认占用的内存空间

注:第一次登录时需要密码,这个密码载工作目录的admin.password文件中,复制粘贴即可

三,Nexus私服的简单操作

③ 库的创建类型

④ 创建选项

⑤ 将库加入组(进入组 -> 将库加入组)

⑥ 手动上传加入jar包

三,本地仓库访问nexus私服

一般开发过程中都是通过本地仓库连接私服进行上传和下载,虽然nexus可以手动上传和下载但开发过程中还是过于麻烦

主要配置上传和下载的地址:

  • 上传的地址:这个地址是配置在项目中
  • 下载的地址:这个地址配置在本地仓库中,项目拉取主要通过本地仓库本地仓库通过私服

配置本地仓库的setting.xml文件

步骤:

  • 配置访问私服的用户和密码
  • 配置访问私服库的地址

① 配置私服的用户和密码

<!--添加下面的内容-->
<!--添加访问私服的用户,severs可以添加多个用户-->
<servers>
<!--添一个具体用户,一个server代表一个用户-->
<server>
        <!--当前用户的ID自定义,依赖上传时需要和这个id保持一致-->
      <id>deploymentRepo</id>
        <!--私服的用户名-->
      <username>repouser</username>
        <!--私服的密码-->
      <password>repopwd</password>
    </server>
</servers>

② 配置下载的地址(和配置镜像仓库差不多)

<mirror>    
        <!--自定义id-->
      <id>wql-nexus</id>
        <!--拦截那个仓库的依赖下载请求,*表示所有-->
      <mirrorOf>*</mirrorOf>
        <!--拦截请求后需要转发的地址,这里填私服库的地址-->
      <url>http://localhost:8081/repository/maven-public/</url>
    </mirror>
  </mirrors>

注:mirrorOf的作用为拦截请求并转发,*表示当前mirror为所有仓库镜像,所有远程仓库请求地址为当前mirror对应的URL( having it mirror all repository requests)。所以我把此处的mirrorOf改为resp1,此时当前mirror只会拦截仓库resp1的依赖请求,对于其他请求会到远程中央仓库去下载,但下载的速度非常的慢,同时出现连接超时的现象

四,IDEA项目访问私服并上传依赖

之前说了配置私服需要配置两个,在本地仓库的配置是针对下载依赖连接私服,在项目中配置是针对组件上传连接私服

① 项目配置私服发布依赖:

<!--发布配置管理-->
<distributionManagement>
    <!--假如项目是发布版就通过这个标签进行上传-->
    <repository>
        <!--这个id是一个server用户,之前在本地仓库中配置用户,把id添进来进行-->
    <id>wql-nexus</id>
        <!--上传的url地址,这里可以是私服库或库组的地址-->
        <url>http://localhost:8081/repository/maven-public/</url>
    </repository>
    <!--假如项目是快照版就通过这个标签进行上传-->
    <snapshotRepository>
        <!--这个id是一个server用户,之前在本地仓库中配置用户,把id添进来进行-->
        <id>wql-nexus</id>
        <!--上传的url地址,这里可以是私服库或库组的地址-->
        <url>http://localhost:8081/repository/maven-public/</url>
    </snapshotRepository>
</distributionManagement>

② 点击deploy进行上传即可


路漫漫其修远兮,吾将上下而求索