0
を構築し、私たちが見ている、最終的な成果物は、すべてのモジュールからのすべてのソースの組み合わせ瓶であるのGradle:マルチプロジェクトが
root
|-- module-1
|-- module-2
.
.
|-- module-n
を次のようにだから私は、プロジェクトの構造を有しています。これが正しい方法かどうかはわかりません。新しいモジュールが
plugins {
id "com.github.johnrengelman.shadow" version "1.2.3"
}
group = 'com.root'
version = System.getenv('BUILD_NUMBER') ?:'1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
configurations { providedCompile }
repositories {
mavenLocal()
mavenCentral()
}
def sparkVersion = '2.0.0'
def scalaMajorVersion = '2.11'
sourceSets {
main {
java {
srcDirs = ['module1/src/main/java', 'module2/src/main/java']
}
}
}
dependencies {
compile group: 'org.scala-lang', name:'scala-compiler', version:'2.11.8'
compile group: 'org.apache.kafka', name: 'kafka-clients', version: '0.9.0.0'
compile group: 'org.apache.spark', name: "spark-streaming-kafka_$scalaMajorVersion", version: '1.6.2'
compile group: 'org.apache.spark', name: "spark-streaming_$scalaMajorVersion", version: "$sparkVersion"
compile group: 'org.apache.spark', name: "spark-catalyst_$scalaMajorVersion", version: "$sparkVersion"
compile group: 'com.google.code.gson', name: 'gson', version: '2.7'
compile group: 'org.apache.zookeeper', name: 'zookeeper', version: '3.4.9'
providedCompile group: 'org.apache.spark', name: "spark-core_$scalaMajorVersion", version: "$sparkVersion"
providedCompile group: 'org.apache.spark', name: "spark-sql_$scalaMajorVersion", version: "$sparkVersion"
testCompile group: 'junit', name: 'junit', version: '4.11'
}
build.dependsOn(shadowJar);
shadowJar {
zip64 true
}
sourceSets.main.compileClasspath += configurations.providedCompile
sourceSets.test.compileClasspath += configurations.providedCompile
sourceSets.test.runtimeClasspath += configurations.providedCompile
artifacts {
archives file: shadowJar.archivePath, builtBy: shadowJar
}
だから我々は単に追加されsourceSetsが追加されます。 はここに私のビルドスクリプトです。
これは正しい方法ではないにしても、これがマルチモジュールプロジェクトを構築する正しい方法かどうかを確認したかっただけです。モジュール間の依存関係をどのように考慮に入れるか?
のように見えるので、すべてのモジュールに独自のグラデーションファイルがありますか?はいの場合、どのように見えますか? – eatSleepCode
達人とは異なり、Gradleのはこのことを規定していません。あなたは、単一のファイル内のすべてのモジュール、別のファイル内の各モジュールまたはその両方の組み合わせを持つことができます。私はあなたがマルチモジュールビルドでのgradleのドキュメントを読むことをお勧めします –