美文网首页
Docker+Nexus3搭建自己的Maven仓库

Docker+Nexus3搭建自己的Maven仓库

作者: AbelEthan | 来源:发表于2020-04-16 16:25 被阅读0次

    想了解Linux安装Nexus3可以看官方文档,这里说一下docker的方式如何安装配置。

    安装Nexus

    • 搜索nexus 镜像

      nexus搜索结果
    • 拉取镜像

      docker pull sonatype/nexus3
      
    • 查看镜像是否拉取下来


      镜像图
    • 创建nexus的挂载地址并授权

      # 创建挂载地址
      mkdir /usr/local/nexus
      # 给文件夹授权
      chmod chmod -R 777 /usr/local/nexus 
      # 后台运行nexus并挂载出来
      docker run -d -p 8081:8081 --name nexus3 -v /usr/local/nexus:/nexus-data sonatype/nexus3
      
    • 访问Nexus(默认账号:admin,密码在admin.password文件里面)


      登录界面

    配置nexus

    • 这些仓库默认就会存在的,你可以直接使用这些仓库,或者修改一下也可以。为了配置自己的仓库我们需要先删掉自带的仓库。


      默认仓库图
    • Blob Stores介绍
      repositor是需要以Blob格式存储的。默认的Blol Stores是基于文件系统的,你可以把它理解为一个目录

      可以通过Repository > Blob Store来管理存储媒介,可以看到下面的默认存储名default,类型File的Blob Store

      Blob图
      Blob Stores参数如下:
      参数 含义
      Name Blob Stores的名称,是唯一的
      Type 类型,一般为File
      State 状态
      Blob count Blob数目
      Total size 现在该存储目录的大小
      Available space 可用的空间,就是存储目录所在分区的磁盘剩余空间
    • 新建Blob Store
      点击Repository > Blob Store > Create blob store

      创建Blob
      • Type: 这个有FileS3两个选项,这里选File就行。
      • Name: 名字随便起吧,我的叫aen-blob
      • Enable Soft Quota: 这个是限制目录的大小。这边就不限制了。你要是限制的话就勾上并填入上限的条件和限制的值就好了。
      • Path:就是个路径,在填入Name的时候就会自动生成

      最后点击Create blob store就好了

    • 创建hosted类型的仓库
      这个仓库主要放一些自己封装的工具类,自己手动构建上传的包,或者中央仓库找不到的包
      hosted有两种类型的maven仓库分别为snapshotrelease,那么该如何区分了?
      snapshot:顾名思义快照的意思,所以一般放一些不稳定的库,一天能修改好几次代码的库。
      release:公开,发行。所以这个一般放的都是比较稳定的发行版本

    • 创建release发行库
      点击Repository > Repositories > Create repository,选择maven2(hosted)。

      选择hosted图
      • Name: 随便起一个名字吧,maven-releases-aen

      • Online: 勾选,设置这个仓库是在线还是离线

      • Maven2:

        Version Policy: 版本策略,三个选择分别为:
        Release:正式版本
        Snapshot:快照版本
        Mixed:混合模式
        这里选择Release

        Layout Policy:布局策略
        Strict:严格
        Permissive:宽松
        这里选择默认的Strict

      • Storage:
        Blob store:选择此仓库使用的Blob存储,这里选择之前创建的aen-blob。
        Strict Content Type Validation:验证上传内容格式,这里不勾选。

      • Hosted:

        Deployment Policy:部署策略,三个选择分别为:
        Allow Redeploy:允许重新部署
        Disable Redeploy:禁止重新部署
        Read-Only:只读

        因为是release发行库,这里选Disable Redeploy

        创建release发行库
    • 创建snapshot快照库
      和创建release发行库一样,点击Repository > Repositories > Create repository,选择maven2(hosted)。

      创建snapshot快照库
    • 创建一个代理(proxy类型) 仓库
      点击Repository > Repositories > Create repository,选择maven2(proxy)。

      创建阿里云代理库
    • 创建一个组(group类型)仓库
      点击Repository > Repositories > Create repository,选择maven2(gruop)。

      创建组库

    组里里面顺序建议阿里云的代理仓库放第一,因为maven代理仓库下载顺序是从上往下的,建议将速度快的仓库放在最前面。

    验证测试

    • 假装你们都有jdkmaven环境了,修改maven里面的设置比如我的D:\apache\apache-maven-3.5.4\conf\settings.xml。记得备份一下这个文件不然修改错了就麻烦了。

      <?xml version="1.0" encoding="UTF-8"?>
      <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
          <!--本地仓库地址-->
          <localRepository>D:\m2\repository</localRepository>
       
          <pluginGroups>
          
          </pluginGroups>
        
          <proxies>
          
          </proxies>
        
          <servers>
              <server>
                  <id>nexus-aen</id>
                  <username>admin</username>
                  <password>Nexus2020</password>
              </server>
              <server>
                  <id>releases</id>
                  <username>admin</username>
                  <password>Nexus2020</password>
              </server>
              <server>
                  <id>snapshots</id>
                  <username>admin</username>
                  <password>Nexus2020</password>
              </server>
          </servers>
        
          <mirrors>
             <mirror>
              <id>nexus-aen</id>
                <name>internal nexus repository</name>
                <!--镜像采用配置好的组的地址-->
                <url>http://192.168.31.236:8081/repository/maven-public-aen/</url>
                <mirrorOf>!internal.repo,*</mirrorOf>
             </mirror>
          </mirrors>
        
          <profiles>
             <profile>
                    <!--ID用来确定该profile的唯一标识-->
                    <id>jdk-1.8</id>
                    <activation>
                        <activeByDefault>true</activeByDefault>
                        <jdk>1.8</jdk>
                    </activation>
                    <properties>
                        <maven.compiler.source>1.8</maven.compiler.source>
                        <maven.compiler.target>1.8</maven.compiler.target>
                        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
                    </properties>
            </profile>
          
            <profile>
            <id>nexus-pro</id>
             <!-- 远程仓库列表 -->
            <repositories>
              <repository>
                <id>nexus</id>
                <name>Nexus Central</name>
               <!-- 虚拟的URL形式,指向镜像的URL-->
                <url>http://192.168.31.236:8081/repository/maven-public-aen/</url>
                <layout>default</layout>
               <!-- 表示可以从这个仓库下载releases版本的构件-->  
                <releases>
                  <enabled>false</enabled>
                  <updatePolicy>always</updatePolicy>
                </releases>
               <!-- 表示可以从这个仓库下载snapshot版本的构件 -->  
                <snapshots>
                  <enabled>true</enabled>
                  <updatePolicy>always</updatePolicy>
                </snapshots>
              </repository>
            </repositories>
            
             <!-- 插件仓库列表 -->
            <pluginRepositories>
              <pluginRepository>
                <id>nexus</id>
                <name>Nexus Central</name>
                <url>http://192.168.31.236:8081/repository/maven-public-aen/</url>
                <layout>default</layout>
                <snapshots>
                  <enabled>true</enabled>
                  <updatePolicy>always</updatePolicy>
                </snapshots>
                <releases>
                   <enabled>true</enabled>
                   <updatePolicy>always</updatePolicy>
                </releases>
              </pluginRepository>
            </pluginRepositories>
          </profile>
           </profiles>
      
        <activeProfiles>
          <activeProfile>nexus-pro</activeProfile>
          <activeProfile>jdk-1.8</activeProfile>
        </activeProfiles>
      </settings>
      
    • 在需要打包的pom文件里面添加distributionManagement属性

       <!-- 使用分发管理将本项目打成jar包,直接上传到指定服务器 -->
       <distributionManagement>
           <!--正式版本-->
           <repository>
               <!-- nexus服务器中用户名:在settings.xml中<server>的id-->
               <id>releases</id>
               <!-- 这个名称自己定义 -->
               <name>Release repository</name>
               <url>http://192.168.31.236:8081/repository/maven-releases-aen/</url>
           </repository>
           <!--快照-->
           <snapshotRepository>
               <!-- nexus服务器中用户名:在settings.xml中<server>的id-->
               <id>snapshots</id>
               <!-- 这个名称自己定义 -->
               <name>Snapshots repository</name>
               <url>http://192.168.31.236:8081/repository/maven-snapshots-aen/</url>
           </snapshotRepository>
       </distributionManagement>
      
    • 在打包上传之前我们先看一下maven-public-aen和maven-releases-aen库


      没打包之前图
    • 打包只需要点点点就好了


      打包图
    • 现在我们再来看一下maven-public-aen和maven-releases-aen库


      maven-releases-aen库
      maven-public-aen库

    好了到这里我们的maven仓库就搭建测试完成了

    参考地址:
    https://help.sonatype.com/repomanager3
    https://hub.docker.com/r/sonatype/nexus3/
    https://blog.csdn.net/wc1695040842/article/details/102575686

    相关文章

      网友评论

          本文标题:Docker+Nexus3搭建自己的Maven仓库

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