使用 Maven 强制重新下载发布依赖项

我正在从事一个依赖项 X 的项目,而 X 又依赖于 Y。

我曾经明确地在我的项目中包含 Y。然而,它并没有被使用,为了让事情更简单,我将它作为一个依赖项添加到 X 的 pom 中。X 被标记为发布依赖项。

问题是,在从我的项目的 pom 中删除 Y 并将其添加到 X 的 pom 中之后,我的项目在 mvn -U clean package上没有拾取到 Y。我知道-U 更新快照,但不释放。

那么,而不删除 ~/. m2/仓库目录怎样才能强制重新下载 X 的 pom 呢?另外,我尝试运行 dependency:purge-local-repository,它也没有工作。

297804 次浏览

当您将它添加到 X 时,您应该已经增加了 X 的版本号,即 X-1.2
然后 X-1.2应该已经安装/部署,您应该已经将项目对 X 的依赖关系改为依赖于新版本 X-1.2

您不能使 Maven 重新下载依赖项,但是您可以使用 mvn dependency:purge-local-repository清除错误下载的依赖项

见: http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html

这将查找当前项目的所有传递依赖项的列表,删除它们,然后重新下载它们。如果你想在每个版本中都运行它,你甚至可以把它作为一个插件添加到你的 pom 中。

我刚刚删除了我的 ~/. m2/库,这迫使我重新下载;)

如果您真的想强制下载所有的依赖项,您可以尝试重新初始化整个 maven 存储库。像在 这篇文章中已经描述过的那样,您可以使用:

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install

项目右键单击-> Maven-> 更新项目 并且像屏幕截图那样选中复选框。它也会更新版本:)

enter image description here

我觉得服从命令会对你有帮助!


mvn -U clean install

根据 Ali Tokmen 的回答,我使用以下命令强制删除了一个特定的本地依赖项:

mvn dependency:purge-local-repository -DmanualInclude=com.skyfish:utils

用这个,它删除 utils从我的。当我运行 mvn clean install时,它总是重新下载 utils JAR 依赖项。如果您想要更加程序化的东西,也可以看看 -Dinclude=...选项。

mvn clean install -U

- U 表示依赖关系的强制更新。

如果您想要更新一个单一的依赖项而不使用 clean 或-U,那么只需将它从您的本地 repo 中删除,然后构建。

转到构建路径... 删除已添加的现有 maven 库... 单击添加库... 单击 maven 托管依赖项... 然后单击 maven 项目设置... 选中“解决 maven 依赖项”复选框。.它会下载所有 Maven 的依赖项

上面提供的大多数答案可以解决这个问题。

但是如果您使用 IntelliJ 并希望它自动为您修复它,请转到 Maven Settings。

构建,执行,部署-> 构建工具-> Maven

enter image description here

关闭离线工作

启用总是更新快照(需要时切换)

如果知道 X的组 id,可以使用此命令重新下载所有 X及其依赖项

mvn clean dependency:purge-local-repository -DresolutionFuzziness=org.id.of.x

它的功能与其他建议使用 dependency:purge-local-repository的答案相同,但它只删除和重新下载与 X相关的所有内容。

只要删除 ~/。M2/itory... .../real _ path 当无效的 LOC 被迫重新下载已删除的 jar 文件时,它就会出现。取而代之的是,从错误出现的地方删除特定的文件夹。

删除 ~/.m2/repository将解决您的问题。但是,如果您仍然需要 留着的旧 ~/.m2/repository,您可以只是改变马文本地路径暂时。

如果您正在使用 IntelliJ,只需转到 MavenSettings 并将 LocalRepository 路径更改为其他位置即可。您可能需要在附近的覆盖复选框中打勾。

enter image description here