繁体   English   中英

从 Maven 远程存储库中删除版本

[英]Removing a Version from a Maven Remote Repo

我目前一直在研究我的第一个 Maven 项目,并且与 Maven 版本控制有些混淆。 我了解在开发新版本时,应在版本号中使用 SNAPSHOT 关键字。 我也明白非 SNAPSHOT 版本应该只发布一次。

我想知道是否可以从 Maven 远程存储库中删除旧版本。 例如,如果我不想再下载1.0.2版本,我该怎么办?

此外,假设我正在开发1.0-SNAPSHOT版本。 当我部署版本1.0时,最后一个1.0-SNAPSHOT版本是否会被其非 SNAPSHOT 对应版本删除/替换?

对此的简单回答:发布版本(没有 SNAPSHOT)是不可变的。 这包括它将永远保留。

原因是:

如果有人使用您的1.0.2版本,而您只需将其删除,那些 > 构建将在没有明显原因的情况下失败。

关于你提到的事情的一句话:

我也明白非 SNAPSHOT 版本应该只发布一次。

您不能两次发布相同的版本。 永远不可能,也不应该。 这意味着您将覆盖改变行为的现有版本。 这也可能会破坏其他构建。

例如,您可以查看https://search.maven.org/artifact/javax.mail/mail您会发现超过 15 年的工件。 它们永远不会被删除,因为可能有人正在使用它们。

如果您的版本1.0.2有问题,只需创建一个新版本1.0.3即可解决问题。 版本号应遵循语义版本控制

如果您在开发期间运行1.0-SNAPSHOT版本并在 1.0 版本期间发布它(通常通过maven-release-plugin ),通常1.0 1.0-SNAPSHOT版本将被自动删除。 所以1.0-SNAPSHOT不再可用。 这是 maven 存储库管理器的默认配置。

如果您使用 AWS S3 存储桶作为 maven 存储库,则有一个残酷的解决方法。 我已经对其进行了测试,并且可以正常工作。

您可以简单地删除远程存储库上的发布文件夹,例如1.0.0/ 事实上,它在主maven-metadata.xml中留下了一些旧version标签,但是当您执行此版本的下一个版本时,它将被覆盖。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM