从 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 对应版本 deleted/replaced?
对此的简单回答:发布版本(没有 SNAPSHOT)是不可变的。这包括它将永远保留。
原因是:
If someone uses your version 1.0.2
and you simply can delete it those > builds will fail without an obvious reason.
关于你提到的事情的一句话:
I also understand that a non SNAPSHOT version should only be released once.
同一版本不能发布两次。永远不可能也不应该。这意味着您将覆盖和改变行为的现有版本。这也可能会破坏其他构建。
例如,您可以查看 https://search.maven.org/artifact/javax.mail/mail 您会发现超过 15 年的文物。它们永远不会被删除,因为可能有人正在使用它们。
如果您的版本 1.0.2
有问题,只需创建一个新版本 1.0.3
即可解决问题。版本号应该遵循semantical versioning.
如果您在开发期间 运行 版本 1.0-SNAPSHOT
并在 1.0
发布期间发布它(通常通过 maven-release-plugin),通常 1.0-SNAPSHOT
版本将被自动删除。所以 1.0-SNAPSHOT
不再可用。这是 maven 存储库管理器的默认配置。
如果您使用 AWS S3 存储桶作为 Maven 存储库,则有一个残酷的解决方法。我已经测试过它并且有效。
您可以简单地删除远程存储库上的发布文件夹,例如 1.0.0/
。事实上,它在主 maven-metadata.xml
中留下了一些遗留的 version
标记,但是当您执行此版本的下一个版本时它将被覆盖。
我目前一直在处理我的第一个 Maven 项目并且 运行 对 Maven 版本控制有些困惑。我知道在开发新版本时,应该在版本号中使用 SNAPSHOT 关键字。我也明白非 SNAPSHOT 版本应该只发布一次。
我想知道是否可以从 Maven 远程存储库中删除旧版本。例如,如果我不再需要 1.0.2
可下载的版本,我该怎么办?
此外,假设我正在开发 1.0-SNAPSHOT
版本。当我部署版本 1.0
时,最后一个 1.0-SNAPSHOT
版本是否会被其非 SNAPSHOT 对应版本 deleted/replaced?
对此的简单回答:发布版本(没有 SNAPSHOT)是不可变的。这包括它将永远保留。
原因是:
If someone uses your version
1.0.2
and you simply can delete it those > builds will fail without an obvious reason.
关于你提到的事情的一句话:
I also understand that a non SNAPSHOT version should only be released once.
同一版本不能发布两次。永远不可能也不应该。这意味着您将覆盖和改变行为的现有版本。这也可能会破坏其他构建。
例如,您可以查看 https://search.maven.org/artifact/javax.mail/mail 您会发现超过 15 年的文物。它们永远不会被删除,因为可能有人正在使用它们。
如果您的版本 1.0.2
有问题,只需创建一个新版本 1.0.3
即可解决问题。版本号应该遵循semantical versioning.
如果您在开发期间 运行 版本 1.0-SNAPSHOT
并在 1.0
发布期间发布它(通常通过 maven-release-plugin),通常 1.0-SNAPSHOT
版本将被自动删除。所以 1.0-SNAPSHOT
不再可用。这是 maven 存储库管理器的默认配置。
如果您使用 AWS S3 存储桶作为 Maven 存储库,则有一个残酷的解决方法。我已经测试过它并且有效。
您可以简单地删除远程存储库上的发布文件夹,例如 1.0.0/
。事实上,它在主 maven-metadata.xml
中留下了一些遗留的 version
标记,但是当您执行此版本的下一个版本时它将被覆盖。