请求协助解决Maven构件查找失败及部署409冲突问题
解决方案:Maven Azure DevOps仓库相关问题
问题1:ArtifactNotFoundException 构件无法找到
原因
Azure DevOps的CardsOnTheSpot仓库未配置Maven Central作为上游源,或上游源同步未完成,导致无法拉取已存在于Maven Central的com.healthmarketscience:rmiio:jar:2.0.4构件。
解决步骤
- 登录Azure DevOps,进入对应项目的包管理页面,找到CardsOnTheSpot仓库的源设置。
- 添加Maven Central作为上游源(地址:
https://repo1.maven.org/maven2/),并确保上游源处于启用状态。 - 等待仓库同步完成后,重新执行Maven构建命令,此时仓库会自动从Maven Central拉取所需构件。
- 如果同步延迟,可临时在本地
settings.xml中直接添加Maven Central仓库作为备用,优先从Central拉取该构件:<repositories> <repository> <id>central</id> <url>https://repo1.maven.org/maven2/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>false</enabled></snapshots> </repository> </repositories>
问题2:部署时409 Conflict 无法上传构件
原因
Azure DevOps仓库默认启用了禁止上传上游源已存在的包策略,由于com.healthmarketscience:rmiio:2.0.4已存在于Maven Central(仓库的上游源),因此拒绝手动上传。
解决步骤
方案1:调整仓库策略(推荐,需保留原版本时使用)
- 进入Azure DevOps仓库的设置 -> 包源设置,找到“禁止上传上游源中已存在的包”选项,将其关闭;或针对特定包设置例外规则。
- 重新执行部署命令:
mvn -e -X deploy:deploy-file -Durl=https://pkgs.dev.azure.com/ORGNAME/PROJECT/_packaging/FEED/maven/v1 -DrepositoryId=cots6 -Dfile=C:\Users\ramku\.m2\repository\com\healthmarketscience\rmiio\2.0.4\rmiio-2.0.4.jar -Dversion=2.0.4 -DgroupId=com.healthmarketscience.rmiio -DartifactId=rmiio -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true
方案2:修改版本号上传(无需保留原版本时使用)
- 将构件版本号修改为自定义版本(如
2.0.4-local),避免与上游源的版本冲突:mvn -e -X deploy:deploy-file -Durl=https://pkgs.dev.azure.com/ORGNAME/PROJECT/_packaging/FEED/maven/v1 -DrepositoryId=cots6 -Dfile=C:\Users\ramku\.m2\repository\com\healthmarketscience\rmiio\2.0.4\rmiio-2.0.4.jar -Dversion=2.0.4-local -DgroupId=com.healthmarketscience.rmiio -DartifactId=rmiio -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true - 在项目的
pom.xml中引用该自定义版本即可。
方案3:无需手动上传,通过上游源拉取
- 若构件未被修改,无需手动上传,只需确保仓库配置了Maven Central作为上游源(参考问题1的解决步骤),Maven会自动从上游源拉取构件,无需手动部署。
内容的提问来源于stack exchange,提问作者Ram Kumar Challa
相关产品推荐
相关产品推荐

