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


135

我正在开发一个依赖项为X的项目。而X则依赖于Y。

我曾经在项目的pom中明确包含Y。但是,它并没有被使用,为了使它更整洁,我改为将其作为依赖项添加到X的pom中。X被标记为发布依赖项。

问题是,从项目的pom中删除Y并将其添加到X的pom中之后,我的项目没有继续使用mvn -U clean package。我知道-U更新快照,但不发布。

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


您已将问题标记为“ maven-2”。在Maven 3中添加了-U选项以解决此问题。我建议升级。
马克·奥康纳

从方法论的角度来看,如果您更改了Xpom,那么即使只是补丁号更改,它也应该构成一个新版本:1.3-> 1.3.1。因此,可以一开始就消除此问题。
jpaugh

但是,快照仍然可能有类似的问题,因此最好有一些答案。
jpaugh

Answers:


165

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

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


11
难道不是同一回事吗?
Svish 2013年

2
它不需要访问文件系统,如果仅配置构建作业(例如,对于CI系统),则可能会出现问题。
奥利弗·德罗博姆

2
如果运行多个项目mvn dependency:purge-local-repository clean package,则可能是一个项目在编译另一个项目时删除本地存储库中的相同依赖项。如何避免?
vikyd

55

我只是删除了〜/ .m2 /存储库,并强制重新下载;)


1
作为最后的手段,它有帮助,我有一个项目,月食和行家有点“困惑”。只需删除.m2文件夹即可使项目编译并正确运行。
莱昂纳多·

5
还可以有选择地从存储库内部删除需要刷新的依赖项。如果愿意,可以进行手动清除。
jpaugh

41

我认为以下命令可能对您有帮助!


mvn -U clean install

4
在问题中使用Maven释放依赖项。不,这可能是更好的评论。
纳曼

31

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

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

这样,它将utils从我的.m2 /存储库中删除,并且utils在我运行时始终会重新下载JAR依赖项mvn clean install


1
我只是需要一种强制Maven重新下载依赖项的方法。这是实际执行此操作的唯一答案,而其他答案则建议删除所有内容。谢谢
smac89 '18

14

在项目上单击鼠标右键-> Maven->更新项目,然后选中屏幕快照中的复选框。它将也更新版本:)

在此处输入图片说明


5
很高兴知道他们是如何实现“ / Releases”部分的。
Ulises Layera '17

正是由于这个,我才需要。
JamesG '17年

12
mvn clean install -U

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

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


同样,这只会重新下载SNAPSHOT依赖项。
Zardoz89

6

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


6

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

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

它与建议使用的其他答案具有同样的作用dependency:purge-local-repository,但它只会删除和重新下载与X


4

如果您确实要强制下载所有依赖项,则可以尝试重新初始化整个Maven存储库。就像已经描述过的这篇文章一样,您可以使用:

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

3

只需删除无效LOC所在的〜/ .m2 / repository ..... / actual_path,因为它会强制重新下载已删除的jar文件。不要删除整个存储库文件夹,而要删除发生错误的特定文件夹。


0

删除~/.m2/repository将解决您的问题。但是,如果您仍然需要保留旧版本~/.m2/repository,则可以临时更改Maven本地路径。

如果您正在使用IntelliJ,只需转到Maven设置,然后将本地存储库路径更改为其他位置。您可能需要勾选附近的替代复选框。

在此处输入图片说明


-1

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

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

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

在此处输入图片说明

停用离线工作

启用始终更新快照(在需要时切换)


1
如果您能同时分享反对的理由,也将不胜感激。谢谢。
Abhishek Nandgaonkar,

1
据推测,因为快照不是发行版,所以这不能解决问题。
soru

-2

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


2
这假设使用了某种IDE,但该问题不支持该假设,您甚至没有指定使用哪种IDE!
菲尔(Phil)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.