【问题标题】:How to update a maven dependency with a same version number in Azure Artifacts如何在 Azure Artifacts 中更新具有相同版本号的 Maven 依赖项
【发布时间】:2019-07-23 01:48:30
【问题描述】:

我们将 Maven 私有存储库 Nexus 更改为 Azure Artifacts。 当我们上传带有某个版本的私有 Maven 依赖项时,它会告诉我们以下信息:

[ERROR] 未能执行目标 org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy 项目 HmapBasic 上的(默认部署):无法部署工件: 无法传输工件 com.hand:HmapBasic:pom:3.0.3-RELEASE 从/到 dev-azure-com-kohlerdevops-konnect-unified (https://pkgs.dev.azure.com/KohlerDevOps/_packaging/Konnect-Unified/maven/v1/): 传输文件失败: https://pkgs.dev.azure.com/KohlerDevOps/_packaging/Konnect-Unified/maven/v1/com/hand/HmapBasic/3.0.3-RELEASE/HmapBasic-3.0.3-RELEASE.pom。 返回码为:409

我搜索了代码 409 错误。这意味着我们已经上传了这个版本的依赖,我们不能再上传了。 我们想用新的依赖覆盖旧的依赖而不改变版本(因为如果我们改变版本,我们所有的项目都需要改变pom.xml)

我们如何在 Azure Artifacts 中做到这一点?

【问题讨论】:

    标签: azure-devops azure-artifacts


    【解决方案1】:

    如何在 Azure Artifacts 中更新具有相同版本号的 maven 依赖项

    恐怕您必须更改 pom.xml,我知道这对您来说是多么令人沮丧。但这是 Azure Artifacts 为确保构建结果的正确性而特意设计的。

    查看文档:Understand immutability of packages.

    一旦您将包的特定版本发布到提要, 版本号是永久保留的。您不能上传更新的 具有相同版本号的修订包,或将其删除并 上传相同版本的新包。

    这样设计的原因:

    这是因为包括 NuGet 在内的许多包客户端都保留了本地缓存 您机器上的软件包。一旦客户端缓存了特定的 package@version,它将在未来安装/恢复时返回该副本 要求。如果在服务器上将 package@version (rev 1) 替换为 一个新的 package@version (rev 2),客户端无法告诉 区别。客户端仍然使用缓存中的旧版本。这可能会导致不确定的构建结果 不同的机器。

    所以我们不能覆盖所有已经被 上传,即使我们无法删除它们并重新上传。解决 这个问题,唯一的办法就是用一个新的 版本

    查看我的another thread 了解更多信息。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我刚刚在 Azure DevOps 上进行了测试,如果您使用“SNAPSHOT”后缀,它将覆盖之前的包/工件。例如2.0.0-SNAPSHOT

      【讨论】:

        猜你喜欢
        • 2012-02-19
        • 1970-01-01
        • 1970-01-01
        • 2018-07-14
        • 2016-05-23
        • 1970-01-01
        • 2016-05-24
        • 2016-06-30
        • 1970-01-01
        相关资源
        最近更新 更多