2013-01-31 105 views
16

在本地多模塊項目上運行mvn install時,它會生成項目工件並將其安裝到本地倉庫中。 mvn clean似乎清理我的項目特定的目標目錄。如何從本地Maven回購中刪除項目工件?

使用maven的命令讓它從本地repo中卸載我的項目模塊?例如我的項目輸出foo-0.1.jar和bar-0.2.jar我希望那些從我的本地回購庫中刪除,而不必去那裏並自己刪除它們。

+0

嗯,通常我只是......從文件系統中刪除它們...... –

+0

有他們的17單個項目運行一個腳本來刪除它們很討厭,所以我寧願行家會這樣做的,因爲它知道那裏有什麼。 – ams

+0

如果你從maven的角度來看項目輸出foo-0.1.jar是一個永遠不會從本地倉庫中刪除的版本。所以第一個問題:爲什麼你想刪除它們? – khmarbaise

回答

4

您可以從本地存儲庫中清除工件,但爲什麼要這樣做呢?除此之外,你可以做到這一點通過maven-dependency-plugin

這將清除所有項目和依賴構件

mvn dependency:purge-local-repository 

這可以通過附加的命令行參數(見文檔)瞭解更多詳情的影響。

+2

我有'mvn安裝'一些文物。運行'mvn dependency:purge-local-repository'後,依賴該工件的其他項目仍然會生成。如果它已從本地回購中刪除,他們從哪裏獲得該物品? – Honza

+0

'dependency:purge-local-repository' will * not * remote the artifact by the current pom itself。它只是'重新加載'所有的依賴關係。 – isnot2bad

2

最好的是實現一個發佈策略,即只要發展中的工件附加版本爲SNAPSHOT。然後,Maven在運行安裝時會自動更新本地存儲庫中的工件。完成開發後,您將刪除SNAPSHOT併發布版本(即通過部署)。如果需要進一步開發,您可以增加版本號並使用SNAPSHOT再次追加。

+0

這是一個特別糟糕的策略,它會阻止您檢測循環依賴或遺失的文物,直到它太遲。 – marcv81

+0

如何?聽起來像MrsTang提議使用標準的Maven版本控制......在開發過程中使用-SNAPSHOT,然後在發佈時刪除它。雖然我不確定它是否真的解決了用戶在下載依賴時面臨的挑戰,但我不遵循如何使用標準版本控制來防止檢測循環依賴或缺失工件。 – tbradt

37
mvn build-helper:remove-project-artifact 
+1

只從庫中刪除當前項目!用法:導航到項目並運行命令 – tbraun

+1

工程師,謝謝! – JRichardsz

相關問題