使用Docker基于Nexus3快速搭建Maven私有仓库

文章目录

        • 前言
        • 问题分析
        • 环境搭建
          • 说明
          • Nexus3安装
        • 本地Maven配置
          • 修改setting.xml
          • 上传本地Jar
          • 使用本地包
        • 结合Idea上传本地项目至私有库

前言

近期在做系统优化,重构等工作,关于本地jar包、三方jar(未上传到中央仓库)的管理比较的混乱,因此决定搭建一个Maven的私服来完善一下这一块儿;

  • Maven的基础示意图
    使用Docker基于Nexus3快速搭建Maven私有仓库_第1张图片
    通常,我们并没有使用到虚线标识的那两块儿,基本都是通过本机的Maven直接访问到中央仓库;

问题分析

Maven给我们带来的诸多的好处,这里就不多说了,这里仅仅列一些直接使用中央仓库可能会给我们带来的问题。及使用私服是如何解决的。

  • 网络问题
    • 问题原因
      由于国内安全的网络环境,导致经常会出现无法连接远端maven仓库从而导致jar包更新失败,这个时候,我们就只能被迫去学会科学上网了。
    • 解决方式
      当我们搭建好私服之后,本地优先是连接的私服,如果私有有就直接下载私服的资源并使用,这样相当于只需要私服到中央仓库下载一次就好了,之后的资源获取使用的就是私有仓库,那么就不会出现网络问题而导致jar无法更新;
  • 私有项目的管理
    企业内部的资源,我们就可以上传到本地私服,这样所有的团队成员就可以通过maven的依赖进行资源管理了;
  • 三方未上传到maven中央仓库的类库
    部分开源的三方类库没有上传到Maven中央仓库的,那么我们也可以将其上传到本地私服,这样团队成员之间就可以通过maven依赖来使用这些资源了;

环境搭建

说明
  • 软硬件环境
    CentOS7
    Docker
    Nexus3
  • 准备工作
    • Docker安装
      自从开始使用Docker之后,每次这种安装软件的操作,第一刻想到的就是看看有没有Docker的方式;真的可谓是:一用Docker一时爽,一直用一直爽啊!,如果没有安装Docker的,可以参考:Linux下安装Docker及基础操作
    • Nexus3镜像
      Nexus3 Docker官网镜像地址,这里使用的是最新版,使用以下指令下载镜像:
      docker pull sonatype/nexus3
      
Nexus3安装
  • 创建nexus的挂载文件夹
    文件夹的目录可以根据个人情况指定,如果不想挂载文件夹,那么可以忽略这一步(记住:忽略之后,下面的指令把-v的那部分去掉),资源就由容器自行去管理,为了数据的安全性,建议挂载操作
    mkdir -p /home/mvn/nexus-data  && chown -R 200 /home/mvn/nexus-data
    
  • 安装
    由于我的8081被其他业务占用了,这里就使用了8181作为了nexus的端口
    docker run -d -p 8181:8081 --name nexus -v /home/mvn/nexus-data:/nexus-data sonatype/nexus3
    
    两条指令(不挂载的话一条指令),Nexus3的安装就完成了,是不是超级爽!!!
  • 管理页面
    访问监听的端口即可进入管理平台
    默认管理员用户名:admin 密码:admin123
    使用Docker基于Nexus3快速搭建Maven私有仓库_第2张图片
  • 创建本地库
    • 作用
      存放本地资源及三方资源,后续需要用上,这里就先创建了放这里
    • 创建第一步
      使用Docker基于Nexus3快速搭建Maven私有仓库_第3张图片
    • 创建第二步
      使用Docker基于Nexus3快速搭建Maven私有仓库_第4张图片
    • 创建第三步
      使用Docker基于Nexus3快速搭建Maven私有仓库_第5张图片

本地Maven配置

修改setting.xml
  • 添加server配置
    
    	nexus-releases
    	admin
    	admin123
    
    
    	nexus-snapshots
    	admin
    	admin123
    
    
    	3rdParty
    	admin
    	admin123
    
    
  • 添加mirrors配置
    
        nexus
        nexus Mirror chenshu repository
        http://192.168.1.207:8181/repository/maven-public/
        *
      
    
        3rdParty
        3rd party repository
        http://192.168.1.207:8181/repository/3rdParty/
        3rdParty
    
    
  • 配置profiles
    
    	jdk1.8
    	
    	true
    	1.8
    	
    	
    		1.8
    		1.8
    		1.8
    	
    	
    		
    			maven-public
    			http://192.168.1.207:8181/repository/maven-public/
    			
    				true
    			
    			
    				true
    				always
    			
    		
    		
    			3rdParty
    			http://192.168.1.207:8181/repository/3rdParty/
    			
    				true
    			
    			
    				true
    				always
    			
    			
    		
    
    
上传本地Jar
  • 创建或下载本地资源

    假定以上jar为本地或者三方的jar
  • 使用以下命令上传到本地私有库
    mvn deploy:deploy-file -DgroupId=com.lupf -DartifactId=mymaven -Dversion=1.0.0 -Dpackaging=jar -Dfile=mymaven.jar -Durl=http://192.168.1.207:8081/repository/3rdParty/ -DrepositoryId=3rdParty
    
    • 指令说明
      -DgroupId:jar的groupId
      -DartifactId:jar的artifactId
      -Dversion:jar的版本
      -Dpackaging:指定包为jar
      -Dfile:文件地址,可以设置绝对路径,由于我cmd进入了对应的目录,下面的指令使用的相对路径
      -Durl:本地仓库的地址
      -DrepositoryId:仓库名称
      使用Docker基于Nexus3快速搭建Maven私有仓库_第6张图片使用Docker基于Nexus3快速搭建Maven私有仓库_第7张图片
使用本地包
  • pom.xml添加maven依赖
    使用Docker基于Nexus3快速搭建Maven私有仓库_第8张图片
  • 更新拉取资源
    使用以下指令
    mvn compile -U
    
    使用Docker基于Nexus3快速搭建Maven私有仓库_第9张图片

结合Idea上传本地项目至私有库

企业中,不可避免的存在多人、多部门协同开发,为了开发、联调更加方便,我们可以将依赖上传至本地仓库,多方进行依赖,即可快速获取到他人或其他项目组的资源,进行快速开发、联调及测试。

  • 创建maven项目
    idea new一个即可

  • pom文件添加本地仓库的配置
    记得把以下的地址改为个人私有仓库的地址

        
            
                nexus
                Nexus Repository
                http://192.168.1.207:8181/repository/maven-public/
                
                    true
                
                
                    true
                
            
        
        
            
                nexus
                Nexus Plugin Repository
                http://192.168.1.207:8181/repository/maven-public/
                
                    true
                
                
                    true
                
            
        
        
            
                nexus-releases
                Nexus Release Repository
                http://192.168.1.207:8181/repository/maven-releases/
            
            
                nexus-snapshots
                Nexus Snapshot Repository
                http://192.168.1.207:8181/repository/maven-snapshots/
            
        
    
  • 编译上传

    mvn deploy
    

    使用Docker基于Nexus3快速搭建Maven私有仓库_第10张图片

  • 开发版及正式版
    使用Docker基于Nexus3快速搭建Maven私有仓库_第11张图片
    version中,有-SNAPSHOT就是开发版,没有就是稳定正式版,他们会分别上传到maven中的maven-snapshots和maven-releases

  • snapshots和releases的区别
    snapshot:每次都会从服务器拉取一个最新的版本使用,因此这种版本很适合开发过程中使用,当有bug或者调整,维护提交了之后,使用就会获取到最新的使用。
    releases:当检测到本地的maven仓库有相应的版本之后,不会去服务器拉取,就直接使用本地的版本了。

到此,本地资源库已经搭建成功并且可以正常使用了,后续使用如果有问题,再来完善!

你可能感兴趣的:(Maven)