簡體   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