美文网首页
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