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

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

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

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

如果你的本地存储库在某种程度上为发布jar而不是快照(-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

重要的是,使用-U和不使用-U运行mvn的主要区别是-U将用远程SNAPSHOT jar覆盖本地SNAPSHOT jar。

如果你的proj中有其他模块生成jar,则从本地mvn安装创建本地快照jar。

我遇到这个问题的原因不同。我访问了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找不到它的原因!

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