相关推荐recommended
Nexus存储库管理器搭建-Maven私服
作者:mmseoamin日期:2024-02-18

写在前面

🍁个人主页:微枫Micromaple

✨本期专栏:《0到1项目搭建》欢迎订阅学习~

📌源码获取:GitCode、GitHub、码云Gitee 持续更新中,别忘了 star 喔~

在企业开发过程中,就比如说我们Java程序员,一般都是使用Spring或者是SpringBoot项目进行开发的,基本上都是基于Maven或者是Gradle构建的项目,如果说我们使用的Maven仓库是中央仓库的话,在企业内部协同开发的时候,会带来诸多不便。例如,当我们需要协同开发时,难免会对Jar包进行管理,不可能将我们的Jar包上传至中央仓库去,所以我们需要搭建属于内部的Maven仓库。Maven私服仓库也有者诸多好处。本文详细讲述了 Maven私服的搭建、Jar包部署以及SpringBoot配置。

目录

    • 写在前面
    • 一、概述
    • 二、为什么要使用Maven私服仓库
    • 三、搭建Nexus
    • 四、SpringBoot整合
      • 4.1、pom.xml配置
      • 4.2、测试部署
      • 五、上传部署Jar包

        一、概述

        Nexus存储库管理器搭建-Maven私服,在这里插入图片描述,第1张

        Nexus 是一个存储库管理器,极大地简化了内部仓库的维护和外部仓库的访问。

        有非常简单便捷的用户操作界面,方便对Nexus操作及管理。

        在 Nexus 3.0 版本后,增加了对 Docker、NetGet、npm、Bower的支持。

        二、为什么要使用Maven私服仓库

        大家可能会有一个疑问,为啥要搭建Maven私服呢?使用官方的Maven仓库不就可以吗?而且国内也有镜像加速地址,比如阿里等。而我们去搭建一个Maven私服,需要在服务器单独进行搭建,还要进行维护。

        针对这些问题,下面是使用Maven私服的好处:

        • 托管内部存储库: 可以共享内部依赖项,以方便将依赖项安装在每个开发人员的本地存储库中。

        • 加速Maven构建: 当在 Maven 中运行多模块项目时,如果项目依赖于几个 SNAPSHOT,或者没有指定插件版本,Maven 可能必须向远程存储库发出数十到数百个请求。安装 Nexus 的本地实例后将构建时间大大的缩减了。

        • 节省带宽: 如果没有 Maven 私服,开发人员会浪费带宽一遍又一遍的从中央仓库下载相同的文件。使用 Nexus 来保留本地缓存将节省大量带宽。

        • 控制和审计: 可以有效的控制开发团队将使用哪些依赖项。

        • 可上传部署第三方Jar: 可以方便的上传第三方Jar包,并对其进行管理。

        • 可预测性和稳定性: 依靠中央仓库进行日常运营也意味着依赖于互联网连接,如果有 Nexus ,则可以确保即使失去互联网连接,构建工作也可以继续进行。

          三、搭建Nexus

          这里使用docker来搭建Nexus。

          1)、创建文件夹

          mkdir -p /usr/local/docker/nexus
          

          2)、创建docker-compose文件

          vi /usr/local/docker/nexus/docker-compose.yml
          

          docker-compose.yml内容如下:

          version: '3.1'
          services:
            nexus:
              restart: always
              image: sonatype/nexus3
              container_name: nexus
              privileged: true
              ports:
                - 8081:8081
              volumes:
                - ./data:/nexus-data
          

          3)、启动

          启动命令

          docker-compose up -d
          

          如果遇到文件夹权限问题,使用命令更改文件夹权限chmod -R 777 data,然后在重新启动

          4)、访问

          启动完成后,浏览器访问http://IP:8081/,效果如下:

          Nexus存储库管理器搭建-Maven私服,在这里插入图片描述,第2张

          5)、登录

          登录Nexus,点击右上角 Sign in,第一次登录会提示admin的密码在哪,根据提示去相关目录查看。docker-compose中映射nexus-data目录为/usr/local/docker/nexus/data目录,所以我们在data目录去找admin.password文件即可看到密码了。

          Nexus存储库管理器搭建-Maven私服,在这里插入图片描述,第3张

          Nexus存储库管理器搭建-Maven私服,在这里插入图片描述,第4张

          查看密码

          $ cat admin.password 
          1cf97ae1-270f-47e5-8c83-f5af04af34af
          

          登录后会提示设置新的密码,设置一个记得住的密码即可。

          四、SpringBoot整合

          以my-project项目为例。

          4.1、pom.xml配置

          有一个统一的依赖管理模块my-project-dependencies,在pom.xml中增加部署服务器的 Maven 节点内容以及仓库地址,内容如下:

          
          
          	
          		nexus-releases
          		Nexus Release Repository
          		http://192.168.110.158:8081/repository/maven-releases/
          	
          	
          		nexus-snapshots
          		Nexus Snapshot Repository
          		http://192.168.110.158:8081/repository/maven-snapshots/
          	
          
          
          	
          		nexus
          		Nexus Repository
          		http://192.168.110.158:8081/repository/maven-public/
          		
          			true
          		
          		
          			true
          		
          	
          	
          		aliyun-repos
          		Aliyun Repository
          		http://maven.aliyun.com/nexus/content/groups/public
          		
          			true
          		
          		
          			false
          		
          	
          	
          		sonatype-repos
          		Sonatype Repository
          		https://oss.sonatype.org/content/groups/public
          		
          			true
          		
          		
          			false
          		
          	
          	
          		sonatype-repos-s
          		Sonatype Repository
          		https://oss.sonatype.org/content/repositories/snapshots
          		
          			false
          		
          		
          			true
          		
          	
          	
          		spring-snapshots
          		Spring Snapshots
          		https://repo.spring.io/snapshot
          		
          			true
          		
          	
          	
          		spring-milestones
          		Spring Milestones
          		https://repo.spring.io/milestone
          		
          			false
          		
          	
          
          
          	
          		nexus
          		Nexus Plugin Repository
          		http://192.168.110.158:8081/repository/maven-public/
          		
          			true
          		
          		
          			true
          		
          	
          	
          		aliyun-repos
          		Aliyun Repository
          		http://maven.aliyun.com/nexus/content/groups/public
          		
          			true
          		
          		
          			false
          		
          	
          
          

          将IP地址更改为自己的就可以了

          4.2、测试部署

          使用dos窗口进入my-project-dependencies目录下,执行部署命令

          mvn deploy
          

          Nexus存储库管理器搭建-Maven私服,在这里插入图片描述,第5张

          此时出现失败,关键信息Return code is: 401, ReasonPhrase: Unauthorized. ,错误问题是未授权

          我们打开我们配置的Maven的settings.xml,在servers节点增加如下配置

          
            nexus-releases
            admin
            123456
          
          
            nexus-snapshots
            admin
            123456
          
          
          • id: 与构建项目的pom.xml中的repository的id一致。
          • username: 部署用户(可在Nexus中单独创建一个用户专门拿来部署,这里直接使用admin)
          • password: 登录密码

            配置好这些后,先将原先的命令窗口关闭,打开一个新的,在执行一次部署命令

            mvn deploy
            

            Nexus存储库管理器搭建-Maven私服,在这里插入图片描述,第6张

            部署成功,接着我们打开Nexus端查看部署上来的项目

            Nexus存储库管理器搭建-Maven私服,在这里插入图片描述,第7张

            在 Maven 私服中也可以看到,大功告成~

            五、上传部署Jar包

            在开发过程中,我们可能会单独的对Jar进行管理,而我们手中又只有一个Jar文件。这时,我们需要使用到Nexus的上传功能

            1)、点击Upload->选择需要上传的仓库

            Nexus存储库管理器搭建-Maven私服,在这里插入图片描述,第8张

            2)、上传Jar包,填写表单信息

            Nexus存储库管理器搭建-Maven私服,在这里插入图片描述,第9张

            3)、上传成功

            Nexus存储库管理器搭建-Maven私服,在这里插入图片描述,第10张