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