使用Maven强制重新下载版本依赖性

vol*_*lni 120 maven-2 dependency-management maven maven-dependency-plugin

我正在开发一个依赖X的项目.反过来,X依赖于Y.

我曾经明确地将Y包含在我项目的pom中.然而,它没有被使用并且使事情变得更清洁,而是将它作为依赖项添加到X的pom中.X被标记为发布依赖项.

问题是,从我的项目的pom中删除Y并将其添加到X的pom后,我的项目没有接受它mvn -U clean package.我知道-U更新快照但不更新版本.

因此,在不删除〜/ .m2/repository目录的情况下,如何强制重新下载X的pom?此外,我尝试运行dependency:purge-local-repository,它也没有工作.

小智 146

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

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

  • 这不是一回事吗? (10认同)
  • 如果您只配置构建作业(例如,对于CI系统),则不需要访问文件系统,这可能是一个问题. (2认同)
  • 如果多个项目运行`mvn dependency:purge-local-repository clean package`,可能是一个项目在本地存储库中删除相同的依赖项,而另一个项目正在运行compile.怎么避免? (2认同)
  • @vikyd,不确定这是否是最好的方法,但您可以使用`MAVEN_OPTS`环境变量强制maven从标准`.m2/respository`位置的不同文件夹下载/使用依赖项,如下所示:`export MAVEN_OPTS="-Dmaven.repo.local=${PROJECT_DIR}/maven.repository` 这将阻止 maven 使用普通文件夹中的任何依赖项,并使用 `Dmaven.repo.local=` 指定的依赖项。 (2认同)

Rya*_*lly 53

我刚刚删除了我的〜/ .m2/repository并强制重新下载;)

  • 还可以有选择地删除您知道需要从存储库内刷新的依赖项.手动清除,如果你愿意的话. (4认同)

小智 36

我认为以下命令可以帮助你!


mvn -U clean install
Run Code Online (Sandbox Code Playgroud)

  • FWIW这只更新快照,而不是"正常"版本依赖... (7认同)
  • 请说明这个命令的作用. (2认同)
  • **在问题中使用Maven**释放依赖关系.不,这可能是更好的评论. (2认同)

小智 25

感谢Ali Tokmen的回答.我设法使用以下命令强制删除特定的本地依赖项:

mvn dependency:purge-local-repository -DmanualInclude=com.skyfish:utils
Run Code Online (Sandbox Code Playgroud)

有了这个,它utils从我的.m2/repository中删除,它总是utils在我运行时重新下载JAR依赖mvn clean install.

  • 我只需要一种方法来强制 maven 重新下载依赖项。这是唯一真正做到这一点的答案,而其他答案建议删除所有内容。谢谢 (3认同)

nan*_*oft 14

项目右键单击 - > Maven - >更新项目,然后选中屏幕截图中的复选框.它也将更新版本:)

在此输入图像描述

  • 很高兴知道他们如何实现"/ Releases"部分. (3认同)

sma*_*c89 9

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

mvn clean dependency:purge-local-repository -DresolutionFuzziness=org.id.of.x
Run Code Online (Sandbox Code Playgroud)

它与建议使用的其他答案做同样的事情dependency:purge-local-repository,但它只删除和重新下载与X.


小智 8

mvn clean install -U
Run Code Online (Sandbox Code Playgroud)

-U表示强制更新依赖项.

如果要更新单个依赖项而不使用clean或-U,可以将其从本地存储库中删除,然后进行构建.

  • -U仅更新快照依赖项 (6认同)
  • 同样,这只会重新下载 SNAPSHOT 依赖项。 (3认同)

cro*_*wne 6

当你将它添加到X时,你应该增加X的版本号,即X-1.2
然后应该已经安装/部署了X-1.2,你应该已经改变你对X的项目依赖性,以取决于新版本X-1.2


小智 5

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

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install
Run Code Online (Sandbox Code Playgroud)