[英]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.