网站Logo 苏叶的belog

搭建Maven本地仓库

wdadwa
7
2026-02-26

一,私服的安装与配置

nexus 服务器的下载地址:sonatype.com

下载好相应的系统版本,解压开,其中包含两个目录,一个为服务器(nexus),一个为工作空间 (sonatype-work)(运行的所有数据)

2953321-20240709222327027-353590438.png
启动:

  1. 进入服务器的 bin 目录,打开 cmd 命令行输入:nexus /run nexus

  2. 启动时间较长,请耐心等待,如果出现 Started Sonatype *** 则为启动成功

访问: 默认地址为 http://loclhost:8081,浏览器回车后进入到页面

  • 修改端口的方法:在服务器目录下的/etc/nexus-default.properties文件修改端口
  • 修改服务器内存等配置:在服务器目录下的/bin/nexus.vmoptions文件
  • 在使用的时候我们需要登录,其中登录账号是admin,密码保存在工作目录/nexus3/admin.password文件内

刚安装好的 nexus 一共给我们创建了 7 个仓库(不同的 nexus 版本可能有一点差距),我们只需要关注 Format 为 maven2 的仓库即可,也就是一共有 4 个:

  • maven-central:该仓库用来代理 Maven 中央仓库,其策略为 Release,只会下载和缓存中央仓库中的发布版本的构件。
  • maven-releases:策略为 Release 的宿主仓库,用来部署公司或组织内部的发布版本构件。
  • maven-snapshots:策略为 Snapshot 的宿主仓库,用来部署公司或组织内部的快照版本构件。
  • maven-public:仓库组,默认聚合了以上三个仓库。

在私服中修改访问权限,允许匿名用户访问

2953321-20240709222327265-823567919.png

在私服中配置代理仓库地址,即配置镜像源

2953321-20240709222328069-1144771321.png

2953321-20240709222327407-556233730.png

将默认的中央仓库地址,改为阿里云镜像:

http://maven.aliyun.com/nexus/content/groups/public/

二,私服的仓库分类

仓库分类:

  • 宿主仓库 hosted:保存无法从中央仓库获取的资源。

    例如自己研发的项目。

    第三方非开源项目。

  • 代理仓库 proxy:代理远程仓库,通过 nexus 访问其他公共仓库,例如中央仓库。

  • 仓库组 group:

    • 将若干仓库组成一个群组,简化配置。
    • 仓库组不能存放资源,是属于设计型仓库。

私服的资源获取如下图:

2953321-20240709222327336-1251548848.png

三,WebUI仓库使用方法

  1. 创建仓库
    2953321-20240709222327302-871305019.png

  2. 将仓库加入 maven-public 群组中
    2953321-20240709222327308-989843866.png
    2953321-20240709222328038-349604678.png

  3. 通过网页 ui 方式上传资源到仓库中

    2953321-20240709222327374-2111600488.png

    2953321-20240709222327286-98522244.png

    2953321-20240709222327134-1466157851.png

    其中 group id 等参数就是你 jar 包的坐标

四,idea环境中资源的上传与下载

idea 操作流程:

2953321-20240709222327294-1885680950.png

配置流程:

  1. 配置本地仓库访问私服的权限在 maven 安装路径下的/conf/settings.xml

    <servers>
        <!--配置两个,代表访问两个仓库的用户,其中id名字虽然是随意的,但是建议取名为仓库名-->
        <!--账号密码就是web ui界面的账号密码-->
        <server>
        	<id>maven-release</id>
            <username>admin</username>
            <password>admin</password>
        </server>
            <server>
        	<id>maven-snapshots</id>
            <username>admin</username>
            <password>admin</password>
        </server>
    </servers>
    
  2. 配置本地仓库资源来源也在settings.xml

    <mirrors>
    	<mirror>
            <!--这个id随意,建议取仓库名-->
        	<id>nexus-maven</id>
            <!--这个*代表所有资源都从这个仓库拿-->
            <mirrorOf>*</mirrorOf>
            <!--这个代表仓库组的url-->
            <url>http://172.31.154.122:8081/repository/maven-public/</url>
        </mirror>
    </mirrors>
    
  3. 在 idea 中配置pom文件中添加内容:

        <!--发布配置管理-->
        <distributionManagement>
            <!--release版本的资源发布地址-->
            <repository>
                <!--这个是你server里面的值-->
                <id>maven-release</id>
                <!--这个是你仓库的url-->
                <url>http://172.31.154.122:8081/repository/maven-releases/</url>
            </repository>
            <!--snapshots版本的资源发布地址-->
            <snapshotRepository>
                <!--这个是你server里面的值-->
                <id>maven-snapshots</id>
                <!--这个是你仓库的url-->
                <url>http://172.31.154.122:8081/repository/maven-snapshots/</url>
            </snapshotRepository>
        </distributionManagement>
    

    流程:idea 发布资源包时,通过 url 访问仓库,通过 id 找到本地仓库中的 server 配置的账号密码来访问仓库。

  4. idea 的 maven 点击 deploy 就发布到私服了。
    2953321-20240709222327384-370658881.png

  5. 将 maven 的代理仓库配置远程仓库为阿里云仓库
    进入 Nexus 界面,选择中央仓库
    2953321-20240709222327364-1505558623.png

    将原地址 http://repo1.maven.org/maven2/ 改为阿里云的地址 http://maven.aliyun.com/nexus/content/groups/public 即可
    2953321-20240709222327404-204548198.png

五,使用Docker快速搭建maven私服

  1. 拉取镜像

    docker pull sonatype/nexus3
    
  2. 创建外部挂载文件

    #挂载文件夹一定要放开权限,否则后面启动nexus时会无法启动
    mkdir -p /usr/local/nexus-data && chmod 777 /usr/local/nexus-data
    
  3. 启动容器

    docker run \
    -d --name=nexus3 \
    -p 8081:8081 \
    -v /usr/local/nexus-data:/nexus-data \
    sonatype/nexus3
    

登录账号 admin,密码可以去看看 nexus-data 里面的 admin.password 文件

动物装饰