我将我已经工作的项目导入到另一台计算机上,它开始下载依赖项。
显然我的网络连接崩溃了,现在我得到了以下信息:
>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更新?
我遇到这个问题的原因不同。我访问了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找不到它的原因!
要从Eclipse中修复此问题:
1)在Maven pom.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。
以前版本的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再次尝试获取依赖项。