2013-03-12 1355 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

相关问题