美文网首页
nexus私服搭建

nexus私服搭建

作者: liangxifeng833 | 来源:发表于2020-06-07 11:25 被阅读0次

    参考资料:https://www.jianshu.com/p/1cfbc1518fce

    下载安装:

    • 下载安装包: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
    • 找依赖包的流程: 首先在本地仓库中找,如果没命中,那么就找远程私服;远程私服的查找规则同样是先找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

    <mirror>
      <id>nexus-myself</id>
      <!--*指的是访问任何仓库都使用我们的私服-->
      <mirrorOf>*,!spring-milestones</mirrorOf>
      <name>Nexus myself</name>
      <url>http://127.0.0.1:8081/repository/maven-public/</url>
    </mirror>
    

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

    • 在maven的setting.xml文件中配置私服配置,这种方式配置后所有本地使用该配置的maven项目的pom文件都无需配置私服下载相关配置。
    <!-- 全局配置下载依赖 -->
    <profiles>
      <profile>
         <id>mycof</id>
            <repositories>
            <!-- 私有库地址-->
              <repository>
              <id>nexus</id>
              <url>http://127.0.0.1:8081/repository/maven-public/</url>
              <releases>
                <enabled>true</enabled>
              </releases>
              <snapshots>
                <enabled>true</enabled>
              </snapshots>
            </repository>
          </repositories>      
          <pluginRepositories>
            <!--插件库地址-->
            <pluginRepository>
              <id>nexus</id>
              <url>http://127.0.0.1:8081/repository/maven-public/</url>
              <releases>
                <enabled>true</enabled>
              </releases>
              <snapshots>
                <enabled>true</enabled>
               </snapshots>
            </pluginRepository>
          </pluginRepositories>
        </profile> 
      </profiles>
      <!--激活profile-->
      <activeProfiles>
        <activeProfile>mycof</activeProfile>
      </activeProfiles>
    

    上传jar包配置

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

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

    • maven的setting.xml文件配置
     <servers>
         <!-- 配置想内部maven私服上传jar包的权限相关 liangxifeng start-->
        <server>  
            <id>maven-releases</id>  
            <username>admin</username>  
            <password>admin123</password>  
        </server>  
        <server>  
            <id>maven-snapshots</id>  
            <username>admin</username>  
            <password>admin123</password>  
        </server>
        <!-- 配置想内部maven私服上传jar包的权限相关 liangxifeng end-->  
    </servers>
    
    • 项目中的pom文件配置, 我们这里以mavn多模块演示代码为例,注意:这里需要在项目module的最顶层parent中的pom添加:
        <!-- 将本项目jar包上传到本地maven私服 -->
        <distributionManagement>
            <repository>
                <id>maven-releases</id>
                <name>Nexus Release Repository</name>
                <url>http://127.0.0.1:8081/repository/maven-releases/</url>
            </repository>
            <snapshotRepository>
                <id>maven-snapshots</id>
                <name>Nexus Snapshot Repository</name>
                <url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
            </snapshotRepository>
        </distributionManagement>
    

    然后在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私服搭建

          本文链接:https://www.haomeiwen.com/subject/edbbzhtx.html