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

显然我的网络连接崩溃了,现在我得到了以下信息:

    >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更新?


当前回答

What maven does is, it downloads all your project's dependencies into your local repo (.m2 folder). Because of the internet causing issues with your local repo, you project is facing problems. I am not sure if this will surely help you or not but you can try deleting all the files within the repository folder inside the .m2 folder. Since there would be nothing in the local repo, maven would be forced to download the dependencies again, thus forcing an update. Generally, the .m2 folder is located at c:users:[username]:.m2

其他回答

以前版本的maven在mvn clean install中使用-U时不强制检查丢失的版本,只检查快照,但新版本支持这一点。

对于那些还在为以前的版本而挣扎的人来说,下面的内容可能会有所帮助

在Windows上:

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

在Linux上:

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

每当maven由于任何原因(连通性/不存在等)无法下载依赖项时,它将添加“。错误=不能转移工件"在依赖项名称。lastUpdate文件在$home/下的相应文件夹。m2目录。删除这些文件将迫使maven再次尝试获取依赖项。

我试了这里所有的答案,但似乎都不管用。重启我的电脑,然后运行mvn clean install -U。这解决了我的问题。

mvn clean install -U

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

如果之前从未成功下载过发布依赖项,则将以这种方式更新。裁判:https://stackoverflow.com/a/29020990/32453

我遇到这个问题的原因不同。我访问了maven存储库https://mvnrepository.com,寻找spring核心的最新版本,当时是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下面说“注:这个工件它位于Alfresco公共存储库(https://artifacts.alfresco.com/nexus/content/repositories/public/)”

所以XML中的注释完全是误导性的。这个罐子位于另一个存档中,这就是Maven找不到它的原因!

这里所有的答案对我都不起作用。我用了锤子法:

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

这解决了问题:-)