Maven私有仓库-Nexus3

发布时间 2023-04-16 00:18:02作者: 言午日尧耳总

Maven私有仓库-Nexus3

  • 工作中,可能需要封装一些通用的工具类库
  • 但是公司代码较为敏感,一般不能开放到公共仓库中
  • 此时可以使用Nexus3搭建公司内部使用的私有仓库
  • 视频版:BiliBili

Demo步骤

  1. 使用docker创建Nexus3服务
  2. 创建项目并推送仓库
    • 修改项目pom.xml文件配置
    • 修改Maven软件配置
    • 使用"mvn deploy"命令,推送到到仓库
  3. 创建项目并引用上一步的项目
    • 修改Maven软件配置
    • 重启IDE
    • 使用"mvn install"命令,安装依赖

1. 使用docker创建nexus3服务

  • 使用docker创建nexus3容器
    • 访问:http://127.0.0.1:8081
    • 较吃资源,启动速度较慢,显示无法访问页面就多等一会儿(电脑渣的可能要个三五分钟,比如我的)
docker run -d -p 8081:8081 --name nexus sonatype/nexus3
  • 获取nexus3密码

    • 点击页面右上角的"Sign in",按弹窗提示找到默认密码
      • 默认账号:admin
      • 默认密码:容器内的 "/nexus-data/admin.password"
      • 会提示重置密码,改个记得住的密码(或者用默认密码),后面配置需要用到
  • 如下图,复制"maven-releases"/"maven-snapshots"仓库地址

  • nexus-public是一个仓库分组,默认包含以下仓库

2. 创建项目并推送仓库

修改项目pom.xml文件配置

  • 直接改造Maven项目(或者新建一个Maven项目)
    • 执行"mvn package"能打包出jar的项目就行
    • 如下在pom.xml添加nexus3地址信息
      • 与dependencies/build同级
    <dependencies>...略</dependencies>
    <build>...略</build>

    <distributionManagement>
        <repository>
            <id>maven-releases</id>
            <name>maven-releases</name>
            <url>${这里填写从nexus页面上复制的maven-releases的url}</url>
        </repository>
        <snapshotRepository>
            <id>maven-snapshots</id>
            <name>maven-snapshots</name>
            <url>${这里填写从nexus页面上复制的maven-snapshots的url}</url>
        </snapshotRepository>
    </distributionManagement>
  • 推送包
    • 执行 "mvn deoloy"
    • 此时报错 "...status: 401 Unauthorized",说明项目配置正确

修改Maven软件配置

  • 打开 ${maven根目录}/conf/settings.xml
    • 增加nexus账号密码
    • id要和在项目pom.xml中配置的一致
<servers>
    <server>
        <id>maven-releases</id>
        <username>admin</username>
        <password>${密码}</password>
    </server>
    <server>
        <id>maven-snapshots</id>
        <username>admin</username>
        <password>${密码}</password>
    </server>
</servers>
  • 再次执行"mvn deploy"就不会报错了
    • 刷新nexus页面上可以看到上传的包
      • 项目版本不带"-SNAPSHOT"在"maven-releases"目录
      • 否则在"maven-releases"目录

3. 创建项目并引用上一步的项目代码

修改Maven软件配置

  • 打开 ${maven根目录}/conf/settings.xml
    • 启用镜像,如果有其他镜像可以注释掉
  • 重启IDE,pom.xml中像线上的库一样添加dependency即可使用
<mirror>
    <id>nexus-public</id>
    <mirrorOf>*</mirrorOf>
    <name>私有仓库</name>
    <url>${这里填写从nexus页面上复制的maven-public的url}</url>
</mirror>

参考资料