Maven 上传jar到nexus私库

文章目录

      • 一、上传配置
        • [1. 配置Maven的`settings.xml`](#1. 配置Maven的settings.xml)
        • [2. 在项目的`pom.xml`中配置仓库地址](#2. 在项目的pom.xml中配置仓库地址)
        • [3. 执行Maven部署命令](#3. 执行Maven部署命令)
        • [4. 下载nexus私库的包](#4. 下载nexus私库的包)
      • 二、常见错误
        • [1️⃣ 仓库 URL 错误](#1️⃣ 仓库 URL 错误)
        • [2️⃣ Nexus 仓库未开启写权限](#2️⃣ Nexus 仓库未开启写权限)
        • [3️⃣ 版本号不匹配](#3️⃣ 版本号不匹配)
        • [4️⃣ 尝试覆盖不可覆盖的版本](#4️⃣ 尝试覆盖不可覆盖的版本)

一、上传配置

1. 配置Maven的settings.xml

~/.m2/settings.xml<servers>标签中添加Nexus仓库认证信息:

复制代码
<server>
  <id>nexus-repo</id> <!-- 此ID需与pom中的repository ID一致 -->
  <username>your_username</username>
  <password>your_password</password>
</server>
2. 在项目的pom.xml中配置仓库地址
复制代码
<project >
    <distributionManagement>
      <repository>
        <id>nexus-repo</id> <!-- 与settings.xml中的server.id一致 -->
        <name>Nexus Release Repository</name>
        <url>http://your-nexus-domain/repository/maven-releases/</url>
      </repository>
    </distributionManagement>
</project>
3. 执行Maven部署命令
复制代码
mvn clean deploy

Maven会自动构建项目并将JAR上传到Nexus库。

4. 下载nexus私库的包

在项目的pom.xml中添加下载地址, 注意是 /maven-public/

复制代码
<project >
    <repositories>
        <repository>
            <id>nexus-repo</id>
            <url>http://your-nexus-domain/repository/maven-public/</url>
        </repository>
    </repositories>
</project>

同样要配置仓库认证信息, 在~/.m2/settings.xml<servers>标签中添加Nexus仓库认证信息:

复制代码
<server>
  <id>nexus-repo</id> <!-- 此ID需与pom中的repository ID一致 -->
  <username>your_username</username>
  <password>your_password</password>
</server>

二、常见错误

1️⃣ 仓库 URL 错误

这是最常见的问题:

  • 发布版本 (Release)必须上传到 /releases 仓库
  • 快照版本 (SNAPSHOT)必须上传到 /snapshots 仓库

👉 检查

复制代码
<!-- pom.xml 配置示例 -->
<distributionManagement>
  <!-- 发布版本(如 1.0.0)必须用 releases -->
  <repository>
    <id>nexus-releases</id>
    <url>http://nexus.example.com/repository/maven-releases/</url>
  </repository>

  <!-- 快照版本(如 1.0-SNAPSHOT)必须用 snapshots -->
  <snapshotRepository>
    <id>nexus-snapshots</id>
    <url>http://nexus.example.com/repository/maven-snapshots/</url>
  </snapshotRepository>
</distributionManagement>

📌 重要

URL 中的 maven-releasesmaven-snapshots 是 Nexus 默认仓库名,需与您的实际仓库名一致(可在 Nexus 管理界面确认)。


2️⃣ Nexus 仓库未开启写权限

确保仓库支持部署(Deploy)操作:

  1. 登录 Nexus → Repository → 选择仓库(如 maven-releases

  2. 检查配置:

    • Type : hosted(托管仓库)
    • Deployment Policy : Allow redeploy(允许覆盖)或 Disable redeploy(仅首次)
  3. SecurityRoles 中确认用户拥有 nx-repository-view-*-*-* 权限


3️⃣ 版本号不匹配
  • Release 版本(如 1.0.0)不能部署到 snapshots 仓库
  • SNAPSHOT 版本(如 1.0-SNAPSHOT)不能部署到 releases 仓库

👉 验证项目版本号是否匹配仓库类型:

复制代码
<version>1.0.0</version>   → 必须配置 <repository>(releases)
<version>1.0-SNAPSHOT</version> → 必须配置 <snapshotRepository>(snapshots)

4️⃣ 尝试覆盖不可覆盖的版本

若仓库设置为 Disable redeploy

  • 已存在的版本(如 1.0.0)会拒绝覆盖 → 返回 405
  • 解决方案:
    a) 升版本号重新部署
    b) 改为 Allow redeploy(生产环境不推荐)
    c) 在 Nexus 手动删除旧版本

扩展阅读:《Nexus 仓库类型详解》

相关推荐
卓怡学长1 小时前
w156一周穿搭App的设计与实现
java·spring boot·spring·maven·intellij-idea
砚底藏山河4 小时前
行情工程实战 M01|存储选型 CSVSQLiteMySQL
java·python·金融·maven
泡海椒17 小时前
JQuick-Curl 二次开发:自定义解析器、扩展点开发指南,如何把框架能力真正变成团队资产
java·开发语言·okhttp·maven
砚底藏山河2 天前
【量化纯GET实战 #21】用 pandas 做分析:把接口数据变成 DataFrame
java·python·金融·maven·pandas
qinqinzqq3 天前
Maven POM 格式、Schema 与 XSD:一篇讲透
java·maven
o盟3 天前
maven本地仓库有 总是去私仓中下载
java·maven·intellij-idea
还是大剑师兰特4 天前
Maven‑3.9.16 Windows 下载+安装+环境变量完整教程
java·windows·maven
qq_366086224 天前
idea 每次重启软件 Maven 中依赖 jar 包缺失
maven·intellij-idea·jar
橘子编程4 天前
Java邮件发送全攻略:从入门到实战
java·开发语言·spring boot·spring·spring cloud·maven
南大白4 天前
IDEA Maven+JDK 全局配置 日志记录
java·maven·intellij-idea