2013-03-13 14 views
6

Próbuję użyć Facebooka Android SDK w mojej aplikacji Maven Android. Do tego użyłem niestandardowego maven repo (https://github.com/avianey/facebook-api-android-maven). Zauważyłem, że pakiet wsparcia dla Androida jest nieaktualny i utworzył moje własne repozytorium github (jest to dokładnie ten sam projekt, z wyjątkiem pom). To działało przez chwilę. Kiedy jednak członkowie mojego zespołu chcieli zaimportować zależności, wyrzucił kilka wyjątków.Importowanie apklib z githuba z Mavenem

Error when importing module '~apklib-com.github.bertdecock_facebook-android-ahoy-api_3.0.0': Cannot find file C:\Users\Bert\.m2\repository\com\github\bertdecock\facebook-android-ahoy-api\3.0.0\facebook-android-ahoy-api-3.0.0.apklib 
17:19:50 Error when importing module '~apklib-com.github.bertdecock_facebook-android-ahoy-api_3.0.0': Cannot find file C:\Users\Bert\.m2\repository\com\github\bertdecock\facebook-android-ahoy-api\3.0.0\facebook-android-ahoy-api-3.0.0.apklib 
17:19:50 Error when importing module '~apklib-com.github.bertdecock_facebook-android-ahoy-api_3.0.0': Cannot find src directory in C:/Users/Bert/Development/IntelliJ Projects/SDProject/AndroidApp/gen-external-apklibs/com.github.bertdecock_facebook-android-ahoy-api_3.0.0 

Usunąłem apklib z mojego lokalnego repozytorium i zauważyłem, że nie zaimportuje więcej. Nie wiem, dlaczego zadziałało za pierwszym razem.

To właśnie użyłem w moim pom do importowania oryginalnego projektu:

<repositories> 
    ... 
    <repository> 
    <id>The mavenized Facebook Android API</id> 
    <url>http://avianey.github.com/facebook-api-android-maven/</url> 
    </repository> 
</repositories> 

... 

<dependencies> 
    ... 
    <dependency> 
    <groupId>com.github.avianey</groupId> 
    <artifactId>facebook-android-api</artifactId> 
    <version>3.0.0</version> 
    <type>apklib</type> 
    </dependency> 
</dependencies> 

I tak właśnie importowane mój własny projekt niestandardowy (https://github.com/bertdecock/facebook-android-ahoy-api):

<repository> 
    <id>The mavenized Facebook Android API</id> 
    <url>https://github.com/bertdecock/facebook-android-ahoy-api/</url> 
</repository> 

<dependency> 
    <groupId>com.github.bertdecock</groupId> 
    <artifactId>facebook-android-ahoy-api</artifactId> 
    <version>3.0.0</version> 
    <type>apklib</type> 
</dependency> 

Kiedy przywrócić stary apklib w moim lokalnym repozytorium, działa dobrze. Usuń go i przestanie działać.

Jednak, gdy próbuję zaktualizować swoje zależności, maven znajduje pom projekt na Facebooku i umieszcza go w moim lokalnym repozytorium.

Wszelkie sugestie, dlaczego tak się dzieje (i jak to naprawić) byłyby mile widziane!

Odpowiedz

0

Spróbuj usunąć wszystkie pliki _maven.repositories z lokalnego repozytorium maven. Zawierają informacje o pochodzeniu artefaktów.

Maven próbuje zaktualizować twój jar ze starej lokalizacji (zapisanej w _maven.repositories) i nie powiedzie się. Zakłada się tutaj, że ta sama aftifact na innym zdalnym repozytorium może być inna.

Aby usunąć wszystkie _maven.repositories można użyć tego polecenia:

find ~/.m2/ -name _maven.repositories | xargs rm