我的maven settings.xml(位于我的Jenkins的managedfiles部分中)有多个存储库。
<repositories>
<repository>
<id>nexus-abc</id>
<name>Nexus Everything Repository</name>
<url>https://nexus.us.abc.com/repository/abc-snapshots-maven-hosted/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>newutil</id>
<name>newutil Repository</name>
<url>https://nexus.us.abc.com/repository/cd-datautil-releases-maven-hosted/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
我假设存储库部分仅用于依赖项下载。我的一个项目从https://nexus.us.abc.com/repository/cd-datautil-releases-maven-hosted/下载依赖项,并且工作正常。我有另一个项目需要从https://nexus.us.abc.com/repository/abc-snapshots-maven-hosted/下载依赖项jar,但在构建它时会在Jenkins日志中收到此消息:
无法读取com.abc1.abc2.abc:abc-spanner-model:jar:1.0_GCP-SNAPSHOT的工件描述符:无法传输工件com.abc1.abc2.abc:abc-spanner-model:pom:1.0 _GCP-SNAPSHOT从/到newutil(https://nexus.us.abc.com/repository/cd-datautil-releases-maven-hosted/):无法传输文件:https://nexus.us.abc.com/repository/cd-datautil-releases-maven-hosted/com/abc1/abc2/abc/abc-spanner-model/1.0_GCP-SNAPSHOT/abc-spanner-model-1.0_GCP-SNAPSHOT.pom。返回码是:400,ReasonPhrase:仓库版本策略:RELEASE不允许版本:1.0_GCP-SNAPSHOT。 -> [帮助1]
它正在尝试从其他存储库(newutil)下载并失败。如何使它从nexus-abc下载?我已经更改了存储库的顺序,但是它仍然尝试使用错误的存储库,但失败了。下载依赖项时,Maven遵循什么顺序?为什么不尝试从nexus-abc下载?我是否需要在项目的pom.xml中添加任何内容?
您正在settings.xml
中声明一个既包含发行版又包含快照的Maven存储库。
nexus中的相应存储库配置仅在尝试获取/推送快照时允许发布。这是通过Maven存储库创建表单上的Version policy
选项设置的,可以是Release
,Snapshot
或Mixed
。
[不幸的是,这是Nexus中Maven存储库的不变设置,这意味着,如果要更改它,除了在nexus中删除并重新创建存储库外,别无其他选择(如果需要,可以保存并重新上传相应的工件。您需要保留它们)。