1

Gradleで定義された2つのプロジェクト、projectAとprojectBがマルチプロジェクトとして定義されています。

ProjectA はspring1-beans.jarとの依存関係を持ち、ProjectB は ProjectA との依存関係を持ちます。

私が得た問題は、ProjectB にもspring3-beansとの依存関係があるため、Spring1 jar を除外する必要があることです。そうしないと、間違ったバージョンの Spring が使用されます。

ProjectA の Gradle conf ファイルは次のようになります。

dependencies {
    compile files('lib/spring-beans.jar')
}

および ProjectB の設定:

dependencies {

    compile project(':projects:projectA') {
        exclude files('lib/spring-beans.jar')
    }
}

残念ながら、これは機能しませ。Gradle は次のエラーをスローします。

プロジェクトで引数 [ファイル コレクション] のメソッド exclude() が見つかりませんでした

同様の出力を持つモジュールでも試しました:

「lib/spring-beans.jar」という記述は無効です

ノート:

  • プロジェクトが Ant から移行されているため、JAR の依存関係を使用しているため、提案を受け付けていますが、リモート リポジトリに切り替えることができません。
4

1 に答える 1

0

最近、Android Gradle ビルドで同様の問題が発生しました。問題は次のとおりです。

java.io.IOException: Invalid argument
Could not normalize path for file 'C:\Users\xxxxxx\AndroidStudioProjects\FightClub\app\libs\*.jar'.

Gradle ファイルの一部を次に示します。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])  <----  USE THIS
    compile project(':LibQSM')
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.stripe:stripe-android:+'
    compile 'net.hockeyapp.android:HockeySDK:3.5.0'
    compile 'com.joanzapata.pdfview:android-pdfview:1.0.+@aar'
    compile 'com.google.android.gms:play-services-gcm:7.0.0'
    compile files('libs/*.jar') <---- NOT THIS, PROBLEM HERE!!!!!
}

問題は、依存関係のパスを指定する方法であることが判明しました。指摘された問題の行には区切り文字「/」が含まれており、Windows では壊れていましたが、OSX と Linux では問題なく動作していました。

最初に示した方法を必ず使用してください... 'compile fileTree(dir: 'xxx', include: ['*.jar'])' を 2 番目の方法で使用してください。

于 2015-04-30T18:28:47.443 に答える