【问题标题】:Keep the last Maven SNAPSHOT in the repository?将最后一个 Maven SNAPSHOT 保留在存储库中吗?
【发布时间】:2020-04-17 08:10:48
【问题描述】:

目前,我们的 Nexus 会整理 SNAPSHOT,但始终保留最后一个 SNAPSHOT,即使存在发布版本也是如此。原因如下:

  • 能够检出旧版本并(在本地)构建它们。
  • 能够运行像versions:use-releases 这样的目标,它只能用发布版本替换现有 SNAPSHOT 版本。

我不喜欢的是 SNAPSHOT 占用了数百 GB 的磁盘空间,尽管它们大多无用。

在我们几年前退役的 Ant 系统中,已针对发布版本解决了不存在的“SNAPSHOT”问题。这解决了上述困境,但在 Maven 中是不可能的。

还有其他好的解决方案吗?

欢迎使用 Nexus 和 Artifactory 的解决方案。

【问题讨论】:

    标签: java maven artifactory nexus


    【解决方案1】:

    如果您激活Nexus3 cleanup policy to "prerelease",那么每当发布版本时,它应该会删除所有快照。

    我在我的商店中使用它,并接到一些用户无法获取快照(给定版本的任何快照)的电话:我必须解释这是因为已经发布了一个版本(具有相同的版本号)

    【讨论】:

    • 是的,但是您如何处理问题中描述的缺点?好像就是有些人所说的“红色星期一”,意思是在周末清理之后,突然他们的项目在 Eclipse 中是红色的,他们需要手动整理一下才能继续工作(像versions:use-releases 这样的目标不再起作用)。它将避免这种开发中断。
    • @JFMeier 我的同事并不认为这是一个缺点:他们知道他们必须更新他们的依赖项才能依赖于一个版本(比快照更安全,它可以随时更改,并且使构建变红)
    • 我只是害怕更新的噩梦。例如,如果您的 transitive 依赖项之一已发布,但您的直接依赖项尚未发布?那么你需要添加额外的<dependencyManagement> 条目来改变传递依赖吗?
    • @JFMeier 没错,我们正在使用包含正确依赖管理的 BOM。项目仅声明它们的依赖关系而不指定版本,并将 BOM 引用为快照工件。 CI/CD 链更新 BOM,所有项目自动受益于新版本。
    • @JFMeier 我之前在 Stack Overflow 上记录了这个过程:stackoverflow.com/a/47372449/6309
    猜你喜欢
    • 1970-01-01
    • 2011-12-04
    • 2016-04-19
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多