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

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

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


当前回答

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

如果你想在没有clean或-U的情况下更新单个依赖,你可以从本地repo中删除它,然后构建。

下面的例子用于更新slf4j-api 1.7.1-SNAPSHOT:

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

其他回答

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

所以就我所知,Maven或者更准确的说是Eclipse Maven插件在这方面有一个bug。应该有人报告此事。

mvn clean install -U

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

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

就我而言,我首先做的是:

mvn clean install -U

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

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

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

这解决了问题:-)

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