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

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

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


当前回答

mvn clean install -U

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

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

其他回答

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

-Dmaven.repo.local=localrepo

这样你就能确保在一个洁净的环境中建造。

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

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

以前版本的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再次尝试获取依赖项。

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

使用mvn clean install -U run as maven test之后,使用maven-update project更新你的项目 这对我来说是可行的