Docker+Nexus3搭建自己的Maven仓库

想了解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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,165评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,720评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,849评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,245评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,596评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,747评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,977评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,708评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,448评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,657评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,141评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,493评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,153评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,890评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,799评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,685评论 2 272