私はデスクトップ用に構築するのかAndroid用に作るのかに基づいて、私のマルチプロジェクトビルドでさまざまな依存関係を選択するようにしています。私は再利用しようとしている共通のサブプロジェクト(ライブラリ)を持っています。しかし、Gradleに依存関係の設定を正しく切り替えることはできません。プラットフォームに応じてGradleの依存関係を切り替える
私の主なsettings.gradle
単純にすべての依存関係が含まれています
// /settings.gradle
rootProject.name = 'myProject'
include 'androidUI'
include 'reusableLibrary'
include 'desktopUI'
今androidUI
とdesktopUI
両方が依存関係としてreusableLibrary
を指定:
// /androidUI/build.gradle and /desktopUI/build.gradle
apply plugin: 'java'
dependencies {
compile project(path: ':reusableLibrary', configuration: 'desktop')
}
reusableLibrary
その依存関係がいるかどうか異なっているので、それ自体は、二つの構成を指定しますデスクトップまたはAndroid上に構築されています:
// /reusableLibrary/build.gradle
apply plugin: 'java'
configurations {
desktop {
extendsFrom compile
}
android {
extendsFrom compile
}
}
dependencies {
// Just examples, the real list is longer.
// The point is that h2database is only included on desktop,
// and ormlite is only included on Android.
android 'com.j256.ormlite:ormlite-jdbc:5.0'
desktop 'com.h2database:h2:1.4.192'
}
このは、と思われます。私はdesktopUI
又はandroidUI
のいずれかをコンパイルするときには、私は、依存性reusableLibrary
のもののはreusableLibrary
自体によって提供される実際のJAR が含まないが、私が望むようにクラスパスに含まれていることがわかります。これによりビルドが失敗します。私はreusableLibrary
を正しく設定していないと思う。私はconfigurations {}
ブロックが何をするのかはっきりしていません。
reusableLibrary
のコンパイルされた項目がUIプロジェクトのクラスパスに含まれないのはなぜですか?そして、プラットフォーム固有の依存関係をこのように組み込む標準的な方法は何ですか?