ChatGPT解决这个技术问题 Extra ChatGPT

如何从使用 install:install-file 添加的本地 maven 存储库中删除 jar 文件?

mvn install:install-file -Dfile=phonegap-1.1.0.jar -DgroupId?=phonegap -DartifactId?=phonegap -Dversion=1.1.0 -Dpackaging=jar

我使用上面的命令将本地 jar 安装到 maven 本地 repo 中。现在我已经从 maven repo 获得了依赖。我想从本地仓库中删除它。如何清洁它?


S
Steve Powell

尽管手动删除文件是可行的,但有一种官方方法可以从本地(缓存)存储库中删除项目的依赖项,并可选择从远程存储库中重新解析它们。

标准 Maven 依赖项插件上的目标 purge-local-repository 将从您的缓存中删除本地安装的此项目的依赖项。或者,您可以同时从远程存储库重新解析它们。

这应该用作项目阶段的一部分,因为它适用于包含项目的依赖项。默认情况下,传递依赖项也将被清除(本地)。

如果要从缓存中显式删除单个工件,请将 purge-local-repositorymanualInclude 参数一起使用。例如,从命令行:

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

该文档暗示默认情况下这不会删除传递依赖项。如果您使用非标准缓存位置或在多个平台上运行,这些比“手动”删除文件更可靠。

完整的文档在 maven-dependency-plugin 规范中。

注意:旧版本的 maven dependency 插件有一个 manual-purge-local-repository 目标,现在(2.8 版)使用 manualInclude 暗示了这个目标。还应阅读 manualIncludes(带有 s)的文档。


我认为这不适用于未从 maven 中央或其他存储库下载的.jar。当我运行此命令时,它会删除所有自动下载的 .jar,但是当它到达我手动安装的 .jar 时,它会输出以下错误消息:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:purge-local-repository (default-cli) on project alloy-generator: Failed to refresh project dependencies for: myartifact: required artifacts missing: [ERROR] manually-downloaded-and-installed.jar ...
实际上,在我检查之后,我意识到它确实卸载了.jar,但它仍然输出错误。所以对于手动安装的.jar,我建议手动删除而不是使用这种方法,因为maven会创建一些奇怪的文件,如yourjar.jar.lastUpdatedyourjar.pom.lastUpdated,您可能需要手动删除它们。但如果 maven 自动管理所有依赖项,这是卸载依赖项的好方法。
这种方法还需要一个 Maven 项目才能运行该命令。如果您运行 OP 在 Gradle 构建的上下文中指定的安装命令,这似乎不起作用。
您甚至可以删除一个完整的组:dependency:purge-local-repository -Dinclude=de.slr -DresolutionFuzziness=groupId
s
shareef

虽然您可以执行一个 maven 命令来执行此操作,但从存储库中手动删除文件会更容易。

像这样在 Windows Documents and Settings\your username\.m2 或 Linux 上的 $HOME/.m2


我只会删除 .m2/repository directory。一位同事之前删除了 .m2 目录,这会导致问题,因为在我们的项目中,我们必须修改 settings.xml 文件。
请注意,删除 .m2/repository 目录后,您还将删除所有 maven 插件文件。而使用 purge-local-repository 命令您只删除依赖项。
.m2/repository 下的目录结构是按 Maven 组 ID 组织的,因此您只需删除与要删除的工件对应的子目录即可。
r
rob2universe

至少在当前的 maven 版本上,如果您打算从本地存储库中删除依赖项而不重新下载它们,则需要添加开关 -DreResolve=false。

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

删除依赖项而不再次下载它们。


A
Abimaran Kugathasan

如果您使用的是 linux 操作系统,请删除本地 ~/.m2/repository/phonegap/1.1.0/ 目录下的所有内容(jar、pom.xml 等)。


当我以这种方式删除 jar 时,它会从旧文件夹中“重新下载”jar。可能还有需要删除的引用。
N
Nagesh Vashist

我遇到了同样的问题,经历了上面的所有建议,但没有任何效果。最后我删除了 .m2 和 .ivy 文件夹,它对我有用。


K
Kent Yao

cd ~/.m2 git init git commit -am "一些评论" cd /path/to/your/project mvn install cd ~/.m2 git reset --hard


这个答案可能会也可能不会解决问题,但是如何为您的答案添加一些解释,这可能只会帮助 OP 了解您要向他展示的内容。
此响应与问题无关:您在 .m2 文件夹中显示 git 存储库的设置并重置为 git 存储库。
这应该被删除
这里的想法是通过将 repo 放在 git 下,您可以回滚到干净的版本。但它总是会回滚到你运行 git init 的版本,除非你开始使用 git add/commit 来保持最新,之后你现在有了一组新的依赖项。无论哪种方式,您都不能显式删除模块。所以它基本上没用

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅