nexus私服搭建

参考资料:https://www.jianshu.com/p/1cfbc1518fce
Maven:mirror和repository 区别

下载安装:

  • 下载安装包:https://pan.baidu.com/s/1LjwzEax71H6emkUL3uZRcw;
  • 解压缩
    tar -xzvf nexus-3.9.0-01-unix.tar.gz
    
  • 修改配置文件
      cd  nexus-3.9.0-01/etc/
      vim nexus-default.properties //默认为8081端口;
    
  • 启动
       nexus-3.9.0-01/bin/nexus run 
    
  • 浏览器访问:http://127.0.0.1:8081/
    默认登录用户名 admin 默认密码 admin123
    登录后进入设置页面的Repositeres仓库中,出现如下代表安装成功:
    image.png

配置Nexus

  • 私服工作原理:
    配置Nexus之前,需要先了解一下私服的工作原理,如下图:


    image.png

    image.png
  • 找依赖包的流程: 首先在本地仓库中找,如果没命中,那么就找远程私服;远程私服的查找规则同样是先找host属性的私有库,然后再去找proxy属性的远程仓库;可以配置多个proxy;
  • Nexus仓库类型介绍:
    默认安装有以下这几个仓库,在控制台也可以修改远程仓库的地址,第三方仓库等。
    • hosted(宿主仓库库) :存放本公司开发的jar包(正式版本、测试版本)
    • proxy(代理仓库):代理中央仓库、Apache下测试版本的jar包
    • group(组仓库):使用时连接组仓库,包含Hosted(宿主仓库)和 Proxy(代理仓库)

创建proxy代理仓库

  • 该代理远程地址是aliyun的maven仓库地址:https://maven.aliyun.com/repository/public 注意:选择maven2(proxy)创建
    image.png

    image.png

配置仓库组

  • maven-public为仓库组, 进入该组中,将刚刚创建的aliyun-public仓库加入该组中.先暂时将maven-center仓库从该组中移出去.最后该组中只有三个仓库,一个代理aliyun仓库,两个本地仓库maven-releasesmaven-snapshots
    image.png
  • ** 至此,Nexus基本就这么配置好了,主要在Group组中配置一个代理私服。**

配置下载依赖 setting.xml


  nexus-myself
  
  *,!spring-milestones
  Nexus myself
  http://127.0.0.1:8081/repository/maven-public/

全局配置下载依赖(即项目pom无需配置)

  • 在maven的setting.xml文件中配置私服配置,这种方式配置后所有本地使用该配置的maven项目的pom文件都无需配置私服下载相关配置。


  
     mycof
        
        
          
          nexus
          http://127.0.0.1:8081/repository/maven-public/
          
            true
          
          
            true
          
        
            
      
        
        
          nexus
          http://127.0.0.1:8081/repository/maven-public/
          
            true
          
          
            true
           
        
      
     
  
  
  
    mycof
  

上传jar包配置

  • 对于中央仓库没有的jar包,需要我们自己将jar包发布到私服中去,其中jar包主要分为两类:
    • 一类是本地自己开发供给项目组其余同事使用,这种直接配置项目的pom文件和maven的setting文件,之后deploy发布即可发布到;
    • 另一类是第三方jar包,可以直接使用web页面上传并设置对应GAV即可;

本地maven开发的项目jar上传配置

  • maven的setting.xml文件配置
 
     
      
        maven-releases  
        admin  
        admin123  
      
      
        maven-snapshots  
        admin  
        admin123  
    
      

  • 项目中的pom文件配置, 我们这里以mavn多模块演示代码为例,注意:这里需要在项目module的最顶层parent中的pom添加:
    
    
        
            maven-releases
            Nexus Release Repository
            http://127.0.0.1:8081/repository/maven-releases/
        
        
            maven-snapshots
            Nexus Snapshot Repository
            http://127.0.0.1:8081/repository/maven-snapshots/
        
    

然后在parent项目下执行:mvn deploy -Dmaven.test.skip=true执行效果如下:
开始部分两个pom包和四个jar,两个pom包负责分组配置没有实际java逻辑代码.

image.png

中间省略...
执行结束部分如下代表成功:
image.png

再次访问自己搭建的本地私服:
image.png

  • 这样在api-member-service-impl具体实现项目中就可以执行maven clean package 就不会报找不到api-member-server的jar包依赖了.

  • 注意: 1. 这里只有Snapshot的仓库上传成功,Release仓库并没有上传成功,这是因为版本号名称结尾有SNAPSHOT,默认以这个结尾是不会上传到Release仓库去的,去除就会上传到Release仓库且不会上传到快照仓库

  • 注意 2. Release仓库默认不支持重复发布,可配置

  • 注意3. setting中server标签下的id要和pom文件中仓库配置的id相同,即指定上传到哪个仓库

第三方jar包上传

  • 对于第三方jar包的上传采用nenus提供的web界面上传,上传成功后需要使用该jar包的话,依赖中填写自定义的GAV即可


    image.png

总结:

  • 在使用idea maven创建项目(注意:而不是springboot Initializr)创建多module, 多模块之间互相依赖时, 需要将这些被依赖的jar包放入自己内部的maven私服仓库. 我创建的maven 多项目依赖目录结构如下:


    image.png
  • 以上目录结构说明:
    parent : 父级pom项目, pom中包含spring-boot父级依赖以及所以子项目需要的公共依赖, (父项目添加依赖, 子项目就不用添加了)
    api-service: 公共接口pom项目, 包含api-member-service interface接口jar项目和api-order-serviceinterface接口jar项目, 这两个项目只有接口没有实现, 不需要有项目入口Application启动文件.
    api-member-service-impl: member服务接口实现warjar项目
    api-order-service-impl: order服务接口实现warjar项目
  • 以上几个项目, 需要向tomcat服务器不熟的其实就是 api-member-service-impl:api-order-service-impl: 两个项目, 可以进入到这两个项目中单独执行 mvn clean package打包. 但是前提是必须在parent项目下执行 mvn deploy -Dmaven.test.skip=true 将所有子项目依赖的jar包发布到 nexus 私服中.
  • 项目地址: https://github.com/liangxifeng833/springcloud/tree/master/parent

你可能感兴趣的:(nexus私服搭建)