2013-03-12 104 views
87
mvn install:install-file -Dfile=phonegap-1.1.0.jar -DgroupId?=phonegap -DartifactId?=phonegap -Dversion=1.1.0 -Dpackaging=jar 

我使用上面的命令將本地jar安裝到maven本地倉庫中。現在我得到了maven回購的依賴。我想從本地回購中刪除這個。如何清潔它?如何從本地maven倉庫中刪除jar文件,該倉庫文件已添加install:install-file?

+0

可能的重複[如何從本地maven回購項目中刪除項目工件?](https://stackoverflow.com/questions/14631882/how-to-do-remove-a-projects-artifacts-from-the- local-maven-repo) – acm 2017-12-12 16:43:26

回答

76

雖然有一個maven命令可以執行此操作,但只需手動從存儲庫中刪除文件會更容易。

像這樣在Windows Documents and Settings\your username\.m2$home/.m2在Linux上

+5

我只會刪除'.m2/repository目錄'。同事之前已經刪除了.m2目錄,並且會導致問題,因爲在我們的項目中我們必須修改'settings.xml'文件。 – Tiris 2015-01-29 17:42:19

+4

請注意,刪除'.m2/repository'目錄後,您還將刪除所有Maven插件文件。而使用'purge-local-repository'命令您只刪除依賴關係。 – collinhaines 2016-06-30 12:06:04

+1

「.m2/repository」下的目錄結構由Maven組標識符組織,因此您可以刪除與要刪除的構件相對應的子目錄。 – 2016-08-23 19:33:15

7

如果您使用的是linux操作系統,請刪除本地~/.m2/repository/phonegap/1.1.0/目錄下的所有內容(jar,pom.xml等)。

+0

當我以這種方式移除jar時,它會從舊文件夾「重新下載」jar。可能還有需要刪除的引用。 – 2014-11-07 14:42:16

90

雖然手動刪除文件的工作,有從本地(高速緩存)庫中刪除項目的依賴和可選的重新解決的官方方式他們來自遠程倉庫。

標準Maven依賴項插件上的目標purge-local-repository將從您的緩存中刪除此項目的本地安裝依賴關係。或者,您可以同時從遠程存儲庫重新解析它們。

這是因爲它適用於依賴的含項目應作爲一個項目階段的一部分。此外,傳遞依賴關係也將被清除(本地),默認情況下。

如果要從緩存中明確刪除單個工件,請使用purge-local-repositorymanualInclude參數。例如,從命令行:

mvn dependency:purge-local-repository -DmanualInclude="groupId:artifactId, ..." 

該文檔暗示,這不會刪除傳遞依賴項默認情況下。如果您正在使用非標準緩存位置運行,或者在多個平臺上運行,這比「手動」刪除文件更可靠。

完整文檔在maven-dependency-plugin規範中。

:舊行家dependency插件的版本有一個manual-purge-local-repository目標,這是現在使用的manualInclude暗示(2.8版本)。應該閱讀manualIncludes(帶有s)的文檔。

+0

我不認爲這適用於未從maven central或其他存儲庫下載的'.jar'。當我運行這個命令時,它將刪除所有自動下載的'.jar',但是當它到達我手動安裝的'.jar'時,它會輸出以下錯誤消息: '[ERROR] Failed執行目標org.apache.maven.plugins:項目合併生成器上的maven-dependency-plugin:2.8:purge-local-repository(default-cli):無法刷新項目依賴關係:myartifact:缺少所需的工件: [ ERROR]手動下載並安裝.jar ...' – stiemannkj1 2014-01-15 19:24:08

+3

實際上,在檢查完之後,我意識到它會卸載'.jar',但它仍然會輸出一個錯誤。因此,對於手動安裝的'.jar',我建議手動刪除而不是使用這種方法,因爲maven會創建一些奇怪的文件,例如'yourjar.jar.lastUpdated'和'yourjar.pom.lastUpdated',您可能需要無論如何手動刪除。但是,如果maven自動管理所有依賴項,這是卸載依賴項的好方法。 – stiemannkj1 2014-01-15 19:38:44

+0

這種方法還需要一個maven項目才能運行該命令。如果您運行OP說在Gradle構建的上下文中指定的安裝命令,這似乎不起作用。 – jdonmoyer 2014-10-24 13:41:39

9

至少在當前的Maven版本中,如果您打算在不重新下載它們的情況下從本地repo刪除依賴項,則需要添加switch -DreResolve = false開關。

mvn dependency:purge-local-repository -DreResolve=false 

刪除依賴項而不再次下載它們。

0
  1. cd ~/.m2
  2. git init
  3. git commit -am "some comments"
  4. cd /path/to/your/project
  5. mvn install
  6. cd ~/.m2
  7. git reset --hard
+1

這個答案可能會也可能不會解決問題,但是如何爲您的答案添加一些解釋,這可能只會幫助OP瞭解您試圖向他展示的內容。 – 2017-12-14 06:57:54