文章目录
一、上传配置
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-releases
和 maven-snapshots
是 Nexus 默认仓库名,需与您的实际仓库名一致(可在 Nexus 管理界面确认)。
2️⃣ Nexus 仓库未开启写权限
确保仓库支持部署(Deploy)操作:
登录 Nexus → Repository → 选择仓库(如
maven-releases
)检查配置:
- Type:
hosted
(托管仓库) - Deployment Policy:
Allow redeploy
(允许覆盖)或Disable redeploy
(仅首次)
- Type:
在 Security → Roles 中确认用户拥有
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 仓库类型详解》