使用 Nexus 代理存储库进行 Maven 打包时出错

Posted

技术标签:

【中文标题】使用 Nexus 代理存储库进行 Maven 打包时出错【英文标题】:an error while using Nexus proxy repository for maven packaging 【发布时间】:2020-08-09 03:17:27 【问题描述】:

在这种情况下,有两个远程存储库,一个用于发布,另一个用于快照。我在 Nexus 中创建了两个代理存储库,一个用于发布存储库,另一个用于快照存储库。 settings.xml中关于repository的部分如下:

<repository>
    <id>aliyun_release</id>
    <url>http://192.168.xxx.xxx:8081/repository/aliyun_release/</url>
</repository>
<repository>
    <id>aliyun_snapshot</id>
    <url>http://192.168.xxx.xxx:8081/repository/aliyun_snapshot/</url>
</repository>

但打包时出错

[ERROR] Failed to execute goal on project riskcontrol-service: Could not resolve `dependencies for project com.yueyue:riskcontrol-service:jar:3.0.0-SNAPSHOT: Failed to collect dependencies at org.springframework.cloud:spring-cloud-starter-pandora:jar:1.3 -> com.taobao.pandora:taobao-hsf.sar:jar:dev-SNAPSHOT: Failed to read artifact descriptor for com.taobao.pandora:taobao-hsf.sar:jar:dev-SNAPSHOT: Could not transfer artifact com.taobao.pandora:taobao-hsf.sar:pom:dev-SNAPSHOT from/to aliyun_release (http://192.168.200.224:8081/repository/aliyun_release/): Failed to transfer file: http://192.168.200.224:8081/repository/aliyun_release/com/taobao/pandora/taobao-hsf.sar/dev-SNAPSHOT/taobao-hsf.sar-dev-SNAPSHOT.pom. Return code is: 400 , ReasonPhrase:Repository version policy: RELEASE does not allow version: dev-SNAPSHOT. -> [Help 1]`

将 settings.xml 更改为原始远程存储库后。包装过程还可以。 原settings.xml如下:

<repository>
    <id>rdc-releases</id>
    <url>https://repo.rdc.aliyun.com/repository/36007-release-InunWS/</url>
</repository>
 <repository>
    <id>rdc-snapshots</id>
    <url>https://repo.rdc.aliyun.com/repository/36007-snapshot-JRXl8h/</url>
 </repository>

Nexus 的版本是 3.19.1 Nexus 中发布代理 repo 的设置如下:

Nexus 中快照代理 repo 的设置如下:

我应该首先检查这个问题? 非常感谢!

【问题讨论】:

发布nexus repo设置的截图。 问题出在这里:Return code is: 400 , ReasonPhrase:Repository version policy: RELEASE does not allow version: dev-SNAPSHOT.... 希望这可能会有所帮助:***.com/questions/40142162/… 你好,请在上面找到 Nexus 的设置。 您没有使用群组有什么原因吗?看起来您正在手动调整回购顺序,这是由一组自动完成的。或者(您的设置可能为时已晚)您可以使用混合模式,该模式允许在一个存储库中同时进行快照和发布。 【参考方案1】:

将代理存储库设置为混合类型后它可以工作。因为远程仓库中既有快照又有发布。

【讨论】:

以上是关于使用 Nexus 代理存储库进行 Maven 打包时出错的主要内容,如果未能解决你的问题,请参考以下文章

Sonatype Nexus 中基于代理 SVN Google 代码的 Maven 存储库

Nexus 原始存储库与 Maven 存储库

使用Nexus3构建Docker私有镜像仓库

Sonatype Nexus3 搭建私有仓库

是否可以使用 Maven 1 部署到 Nexus 存储库?

除了 Nexus、Artifactory 和 Archiva,还有其他 Java 存储库管理器吗?