2013-12-23 177 views
2

我正在使用Linux系统。亚马逊aws artifact无法解析

本地Maven回购目录/Users/username/.m2/repository/我有以下目录:

com/amazonaws/android/core/amazon-aws-android-core/1.6.1 

这意味着该目录的完整路径是:

/Users/username/.m2/repository/com/amazonaws/android/core/amazon-aws-android-core/1.6.1 

上面的目录中,我有文件:

amazon-aws-android-core-1.6.1.jar.lastUpdated 
amazon-aws-android-core-1.6.1.pom.lastUpdated 

在我的项目,我pom.xml包含:

<dependency> 
    <groupId>com.amazonaws.android.core</groupId> 
    <artifactId>amazon-aws-android-core</artifactId> 
    <version>1.6.1</version> 
    <type>jar</type> 
</dependency> 

但是当我运行mvn clean install,我总是得到以下错误信息

The following artifacts could not be resolved: com.amazonaws.android.core:amazon-aws-android-core:jar:1.6.1 

为什么我得到上面的错误&如何摆脱它?

回答

1

你得到上面的错误,因为实际的.jar文件不在您的存储库中。 .lastUpdated文件不是实际的.jar文件以及它们的最新更新版本。 .lastUpdated文件只是簿记文件。

例如,让我们创建一个废话依赖性:

<dependency> 
    <groupId>asdfasdf</groupId> 
    <artifactId>sadffweklsfduasfsdjf</artifactId> 
    <version>1.0</version> 
</dependency> 

,并在其上运行mvn install

Maven然后创建目录~/.m2/repository/asdfasdf/sadffweklsfduasfsdjf/1.0并使用sadffweklsfduasfsdjf-1.0.jar.lastUpdatedsadffweklsfduasfsdjf-1.0.pom.lastUpdated文件填充它。

里面的.lastUpdated文件中的一个,你只需找到类似:

1 #NOTE: This is an Aether internal implementation file, its format can be ch anged without prior notice. 
2 #Fri Jan 03 09:12:05 IST 2014 
3 http\://repo.maven.apache.org/maven2/.lastUpdated=1388733125394 
4 http\://repo.maven.apache.org/maven2/.error= 

,而不是实际的.jar或.pom文件。

为了摆脱这个错误,您需要确保Maven实际上能够到达远程存储库并下载您需要的实际Amazon AWS jar。

1

.lastUpdated文件是元数据文件,而不是实际的jar和pom文件。这种情况表明,您可能试图在没有连接到网络的情况下尝试下载这些文件,或者当回购协议不可用时,现在Maven将不会尝试再次下载这些文件,直到某段时间过去。您可以将-U开关添加到您的命令,以强制检查远程存储库上的更新版本。您也可以从本地存储库中删除该工件的文件夹,这也会导致Maven尝试再次下载它。

也有同样的问题在这里: Maven downloads have .lastUpdated as extension 这里 Maven dependencies in local REPO have .lastUpdated extension

而这里LASTUPDATED文件的一些讨论: http://maven.40175.n5.nabble.com/Maven-3-maven-repositories-and-lastUpdated-td4927537.html