如何强制maven更新?

我在另一台计算机上导入了我已经在工作的项目,它开始下载依赖项。

显然我的互联网连接崩溃了,现在我得到以下内容:

    >Build errors for comics; org.apache.maven.lifecycle.LifecycleExecutionException:Failed to execute goal on project comicsTest: Could not resolve dependencies for project comicsTest:comicsTest:war:0.0.1-SNAPSHOT:The following artifacts could not be resolved:org.springframework:spring-context:jar:3.0.5.RELEASE,org.hibernate:hibernate-entitymanager:jar:3.6.0.Final,org.hibernate:hibernate-core:jar:3.6.0.Final,org.hibernate:hibernate-commons-annotations:jar:3.2.0.Final,org.aspectj:aspectjweaver:jar:1.6.8,commons-lang:commons-lang:jar:2.5,
>mysql:mysql-connector-java:jar:5.1.13: Failure to transfer org.springframework:spring-context:jar:3.0.5.RELEASE from http://repo1.maven.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced.
>Original error: Could not transfer artifact org.springframework:spring-context:jar:3.0.5.RELEASE from central (http://repo1.maven.org/maven2): No response received after 60000

如何强制maven更新?

1143338 次浏览
mvn clean install -U

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

如果以前从未成功下载过发布依赖项,则会以这种方式更新它们。参考:https://stackoverflow.com/a/29020990/32453

-U似乎强制更新所有SNAPSHOT依赖项。

如果你想更新一个单一的依赖项,没有干净或-U,你可以从本地存储库中删除它,然后构建。

下面的示例如果用于更新slf4j-api 1.7.1-SNAPSHOT

rm -rf ~/.m2/repository/org/slf4j/slf4j-api/1.7.1-SNAPSHOTmvn compile

如果您不确定本地存储库中有什么,我建议使用以下选项触发构建:

-Dmaven.repo.local=localrepo

这样,您将确保在洁净室环境中构建。

我在另一个上下文中遇到了错误。所以我的解决方案可能对那些偶然发现这个问题的人有用:

问题:我已将本地存储库复制到另一台计算机,该计算机与特殊存储库没有连接。所以maven试图根据无效的存储库检查工件。

解决方案:删除_maven.repositories文件。

你可以从Eclipse IDE开始有效地做。当然,如果你正在使用它。

Project_Name->Maven->Update Project Configuration->Force Update of Snapshots/Releases

在我的案例中,我首先做的是:

mvn clean install -U

仍然显示相同的错误,然后我关闭了项目并再次重新打开它。最后工作。

mvn clean install -U不起作用,但是mvn -U clean后跟mvn clean install起作用。

这里的所有答案都不适合我。我使用了锤子方法:

find ~/.m2/ -name "*.lastUpdated" | xargs rm

这解决了问题:-)

这是关于Maven最烦人的事情之一。对我来说,会发生以下情况:如果我添加一个依赖项,请求更多的依赖项和越来越多的依赖项,但连接速度很慢,它会在下载和超时时停止。超时时所有尚未获取的依赖项都在. m2缓存中标记为占位符,Maven不会(永远不会)拿起它,除非我通过删除它从缓存中删除占位符条目(如其他说明的那样)。

因此,据我所知,Maven或更准确地说,Eclipse Maven插件对此有bug。有人应该报告这一点。

我们可以使用以下命令强制获取发布和快照存储库的最新更新:

mvn --update-snapshots clean install

如果您的本地存储库在某种程度上被发布罐弄乱了,而不是快照(-U--update-snapshots仅更新快照),您可以使用以下方法清除本地存储库:

 mvn dependency:purge-local-repository

然后,您可能希望再次清理和安装:

 mvn dependency:purge-local-repository clean install

更多信息可在https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-repository.html

我有同样的错误,运行mvn install -U然后运行mvn install对我有用。

我在android-maps-utils依赖项中遇到了同样的错误。在依赖项部分使用aar类型包解决了我的问题。默认类型为jar,因此可能会检查存储库中下载的依赖类型。

我遇到这个问题是因为另一个原因。我去了maven存储库https://mvnrepository.com寻找最新版本的Spring core,当时是5.0.0。M3/存储库向我展示了我pom.xml的这个条目:

<!-- https://mvnrepository.com/artifact/org.springframework/spring-core --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.0.0.M3</version></dependency>

我是个天真的傻瓜,我以为注释告诉我jar位于默认存储库中。

然而,经过大量的头撞,我看到xml下面有一个注释,上面写着“注意:这个工件位于Al的公共存储库(https://artifacts.alfresco.com/nexus/content/repositories/public/)”

因此,XML中的注释完全具有误导性。jar位于另一个存档中,这就是Maven找不到它的原因!

重要的是要添加,运行mvn与-u没有-u的主要区别是-U将使用远程SNAPSHOT jar覆盖本地SNAPSHOT jar。

在您的项目的其他模块生成jar的情况下,从本地mvn install创建的本地SNAPSHOT jar。

要从Eclipse修复此问题:

1)在Mavenpom.xml中添加以下依赖项并保存pom.xml文件。

<!-- https://mvnrepository.com/artifact/com.thoughtworks.xstream/xstream --><dependency><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId><version>1.3.1</version></dependency>

2)转到项目>>Maven>>更新项目

选择项目并单击OK。

3)可选步骤,如果直到步骤2才解决,则在执行步骤1后执行以下步骤

转到项目>>Maven>>更新项目>>选中“强制更新快照/发布”复选框

选择项目并单击OK。

以防有人只想更新项目的快照依赖项并且不想安装工件:

mvn dependency:resolve -U

不要忘记在IDE中重新导入依赖项。在IDEA中,您需要右键单击pom文件并选择Maven->重新导入

您需要检查<maven_home>/conf目录下的settings.xml文件。

-U用于强制更新maven Repo。使用

mvn -U clean install

如果您使用eclipseide,则:

  • 选择项目。
  • 按alt+F5,将弹出更新Maven项目窗口。

  • 检查-强制更新快照/发布,然后单击确定。

如果使用IntellijIDE

  • 转到设置/Maven
  • 检查始终更新快照

我尝试了这里的所有答案,但似乎都不起作用。首先重新启动我的计算机,然后运行mvn clean install -U。这解决了我的问题。

maven的作用是,它会将项目的所有依赖项下载到您的本地repo(. m2文件夹)中。由于互联网导致本地repo出现问题,您的项目面临问题。我不确定这是否一定会帮助您,但您可以尝试删除. m2文件夹中存储库文件夹中的所有文件。由于本地repo中没有任何内容,maven将被迫再次下载依赖项,从而强制更新。一般来说,. m2文件夹位于c: user:[username]:. m2

我使用了IntelliJ IDE,我遇到了类似的问题,为了解决这个问题,我在Maven选项卡中单击了“为所有项目生成源和更新文件夹”。

在此处输入图片描述

以前版本的maven在使用-U和mvn Clean install时没有强制检查缺失的版本,只有快照,尽管新版本支持这一点。

对于仍在努力使用以前版本的人来说,以下内容可能会有所帮助-

在Windows上:

cd %userprofile%\.m2\repositoryfor /r %i in (*.lastUpdated) do del %i

关于Linux:

find ~/.m2  -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;

每当maven由于任何原因(连接/不存在等)无法下载依赖项时,它将在$home/. m2目录下相应文件夹dependency-name.lastUpdate文件中添加“. error=无法传输工件”。删除这些文件将迫使maven再次尝试获取依赖项。

使用mvn干净安装后也作为maven测试运行,然后使用maven-date项目更新您的项目这在我的情况下工作

mvn clean install -e -U -Dmaven.test.skip=true
  1. -e详细异常
  2. -U强制更新
  3. -DskipTests不执行测试用例,但编译测试用例类以在目标/测试类下生成相应的类文件。
  4. -Dmaven.test.skip=true,不要执行测试用例或编译测试用例类。使用maven。测试。跳过不仅跳过运行单元测试,还跳过编译测试代码。

一个小建议。如果使用IntelliJ Idea编译器,建议清理缓存