質問は基本的に、同じJavaコードに基づいた2つのアーティファクトのバリエーションを生成し、消費する方法についてです。ターゲットの互換性が異なる2つのJarを実際に作成する必要がある場合(最初に質問します)、これを実現する1つの方法は、Javaプラグインのmain
ソースセット(およびそれに伴うタスク)を使用して、第1のバリエーションと、第2のバリエーションを生成するための新しいソースセットとを含む。さらに、第2のバリエーションは、独自の構成を使用して公開する必要があり、従属プロジェクトがそれを参照できるようにする必要があります。これは以下のようになります:
コア/ build.gradleを:
応じたプロジェクトで
apply plugin: "java"
sourceCompatibility = 1.4
sourceSets {
main1_4 {
def main = sourceSets.main
java.srcDirs = main.java.srcDirs
resources.srcDirs = main.resources.srcDirs
compileClasspath = main.compileClasspath
runtimeClasspath = main.runtimeClasspath
}
}
compileJava {
targetCompatibility = 1.6
}
compileMain1_4Java {
targetCompatibility = 1.4
}
jar {
archiveName = "core-1.6.jar"
}
main1_4Jar {
archiveName = "core-1.4.jar"
}
configurations {
archives1_4
}
artifacts {
archives1_4 main1_4Jar
}
:
dependencies {
compile project(":core") // depend on 1.6 version
compile project(path: ":core", configuration: "archives1_4") // depend on 1.4 version
}
このすべてのことが可能(ただし、する必要はありません)で行うこと同じビルドスクリプト。詳細については、Gradle User Guideの「マルチプロジェクトビルド」の章を参照してください。
はい、ターゲットの互換性もあります。私は試しました: sourceCompatibility = 1.4 targetCompatibility = 1.4 タスクで、これは動作しません。ターゲットの1つはJava MEで、もう1つはAndroidです。 –
正確には動作しません。 –