2013-12-23 334 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