6

Maven Android アプリケーション内で Facebook Android SDK を使用しようとしています。このために、カスタム Maven リポジトリ ( https://github.com/avianey/facebook-api-android-maven ) を使用しました。Android サポート パッケージが古くなっていることに気付き、独自の github リポジトリを作成しました (pom を除いて、まったく同じプロジェクトです)。これはしばらくの間機能しました。しかし、私のチーム メンバーが Maven の依存関係をインポートしようとすると、いくつかの例外がスローされました。

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

ローカル リポジトリから apklib を削除したところ、インポートされないことに気付きました。なぜそれが初めて機能したのかわかりません。

これは、元のプロジェクトをインポートするために pom で使用したものです。

<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>

そして、これは私が自分のカスタムプロジェクトをインポートした方法です(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>

古い apklib をローカル リポジトリに復元すると、問題なく動作します。それを削除すると、機能しなくなります。

ただし、依存関係を更新しようとすると、maven は facebook プロジェクトの pom を見つけてローカル リポジトリに配置します。

なぜこれが起こっているのか(そしてそれを修正する方法)についての提案は大歓迎です!

4

1 に答える 1

0

_maven.repositoriesローカルの Maven リポジトリからすべてのファイルを削除してみてください。それらはアーティファクトの起源に関する情報を保持しています。

Maven は古い場所 (_maven.repositories に保存されている) から jar を更新しようとして失敗します。ここでの前提は、別のリモート リポジトリ上の同じ後遺症が異なる可能性があるということです。

すべてを削除するには、次の_maven.repositoriesコマンドを使用できます。

find ~/.m2/ -name _maven.repositories | xargs rm 
于 2013-04-25T07:07:34.413 に答える