Fix more broken links
[samza.git] / build.gradle
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements.  See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership.  The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License.  You may obtain a copy of the License at
9  *
10  *   http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied.  See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19
20 buildscript {
21   repositories {
22     mavenCentral()
23   }
24
25   apply from: file('gradle/buildscript.gradle'), to: buildscript
26 }
27
28 allprojects {
29   repositories {
30     mavenCentral()
31     mavenLocal()
32   }
33 }
34
35 apply from: file("gradle/dependency-versions.gradle")
36 apply from: file("gradle/dependency-versions-scala-" + scalaVersion + ".gradle")
37 apply from: file("gradle/release.gradle")
38 apply from: file("gradle/rat.gradle")
39 apply from: file('gradle/customize.gradle')
40
41
42 rat {
43   excludes = [
44     '*.patch',
45     '**/*.eot',
46     '**/*.graffle',
47     '**/*.iml',
48     '**/*.ipr',
49     '**/*.iws',
50     '**/*.json',
51     '**/*.otf',
52     '**/*.svg',
53     '**/*.ttf',
54     '**/*.woff',
55     '**/hs_err_pid*.log',
56     '**/.classpath',
57     '**/.cache/**',
58     '**/.git/**',
59     '**/.gitignore',
60     '**/.gradle/**',
61     '**/.idea/**',
62     '**/.project',
63     '**/.settings/**',
64     '**/.DS_Store/**',
65     '**/bootstrap.css.map',
66     '**/bootstrap.min.css',
67     '**/bootstrap.min.js',
68     '**/build/**',
69     '**/font-awesome.min.css',
70     '**/jquery-1.11.1.min.js',
71     '**/jquery.tablesorter.min.js',
72     '**/non-responsive.less',
73     '**/ropa-sans.css',
74     '**/syntax.css',
75     '**/d3.v3.min.js',
76     '**/dagre-d3.min.js',
77     '.idea/**',
78     '.reviewboardrc',
79     'docs/_site/**',
80     'docs/sitemap.xml',
81     'docs/learn/documentation/*/api/javadocs/**',
82     'docs/Gemfile.lock',
83     'gradle/wrapper/**',
84     'gradlew',
85     'gradlew.bat',
86     'samza-test/state/**',
87     'README.md',
88     'RELEASE.md',
89     'samza-test/src/main/resources/**',
90     'samza-hdfs/src/main/resources/**',
91     'samza-hdfs/src/test/resources/**',
92     'out/**',
93     'state/**'
94   ]
95 }
96
97 allprojects {
98   apply plugin: 'idea'
99
100   // For all scala compilation, add extra compiler options, taken from version-specific
101   // dependency-versions-scala file applied above.
102   tasks.withType(ScalaCompile) {
103     scalaCompileOptions.additionalParameters = scalaOptions
104   }
105 }
106
107 idea {
108   project {
109     languageLevel = 1.8
110   }
111 }
112
113 subprojects {
114   apply plugin: 'eclipse'
115   apply plugin: 'project-report'
116   apply plugin: 'jacoco'
117
118   tasks.withType(ScalaCompile) {
119     // show compile errors in console output
120     logging.setLevel LogLevel.WARN
121   }
122
123   tasks.withType(Test) {
124     test {
125       testLogging {
126         showStackTraces = true
127         showExceptions = true
128         showCauses = true
129         displayGranularity = maxGranularity
130         exceptionFormat = 'full'
131       }
132     }
133   }
134 }
135
136 project(':samza-api') {
137   apply plugin: 'checkstyle'
138   apply plugin: 'java'
139
140   dependencies {
141     compile "org.slf4j:slf4j-api:$slf4jVersion"
142     compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion"
143     testCompile "junit:junit:$junitVersion"
144     testCompile "org.mockito:mockito-core:$mockitoVersion"
145   }
146   checkstyle {
147     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
148     toolVersion = "$checkstyleVersion"
149   }
150 }
151
152 project(":samza-core_$scalaVersion") {
153   apply plugin: 'scala'
154   apply plugin: 'checkstyle'
155
156   // Force scala joint compilation
157   sourceSets.main.scala.srcDir "src/main/java"
158   sourceSets.test.scala.srcDir "src/test/java"
159
160   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
161   // tasks.compileTestJava.enabled = false
162   sourceSets.main.java.srcDirs = []
163   sourceSets.test.java.srcDirs = []
164
165   jar {
166     manifest {
167       attributes("Implementation-Version": "$version")
168     }
169   }
170
171   dependencies {
172     compile project(':samza-api')
173     compile("com.101tec:zkclient:$zkClientVersion") {
174       exclude module: 'junit:junit'
175     }
176     compile "com.google.guava:guava:$guavaVersion"
177     compile "net.sf.jopt-simple:jopt-simple:$joptSimpleVersion"
178     compile "org.apache.commons:commons-collections4:$apacheCommonsCollections4Version"
179     compile "org.apache.commons:commons-lang3:$commonsLang3Version"
180     compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion"
181     compile "org.eclipse.jetty:jetty-webapp:$jettyVersion"
182     compile "org.scala-lang:scala-library:$scalaLibVersion"
183     compile "org.slf4j:slf4j-api:$slf4jVersion"
184     testCompile project(":samza-api").sourceSets.test.output
185     testCompile "junit:junit:$junitVersion"
186     testCompile "org.mockito:mockito-core:$mockitoVersion"
187     testCompile "org.powermock:powermock-api-mockito:$powerMockVersion"
188     testCompile "org.powermock:powermock-core:$powerMockVersion"
189     testCompile "org.powermock:powermock-module-junit4:$powerMockVersion"
190     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
191   }
192
193   checkstyle {
194     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
195     toolVersion = "$checkstyleVersion"
196   }
197 }
198
199 project(':samza-azure') {
200   apply plugin: 'java'
201   apply plugin: 'checkstyle'
202
203   dependencies {
204     compile "com.microsoft.azure:azure-storage:5.3.1"
205     compile "com.microsoft.azure:azure-eventhubs:0.14.5"
206     compile "com.fasterxml.jackson.core:jackson-core:2.8.8"
207     compile "io.dropwizard.metrics:metrics-core:3.1.2"
208     compile project(':samza-api')
209     compile project(":samza-core_$scalaVersion")
210     compile "org.slf4j:slf4j-api:$slf4jVersion"
211     testCompile "junit:junit:$junitVersion"
212     testCompile "org.mockito:mockito-core:$mockitoVersion"
213     testCompile "org.powermock:powermock-api-mockito:$powerMockVersion"
214     testCompile "org.powermock:powermock-core:$powerMockVersion"
215     testCompile "org.powermock:powermock-module-junit4:$powerMockVersion"
216   }
217   checkstyle {
218     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
219     toolVersion = "$checkstyleVersion"
220   }
221 }
222
223 project(':samza-aws') {
224   apply plugin: 'java'
225   apply plugin: 'checkstyle'
226
227   dependencies {
228     compile "com.amazonaws:aws-java-sdk-kinesis:1.11.152"
229     compile "com.amazonaws:amazon-kinesis-client:1.7.5"
230     compile "com.amazonaws:amazon-kinesis-producer:0.10.0"
231     compile "io.dropwizard.metrics:metrics-core:3.1.2"
232     compile "org.codehaus.jackson:jackson-core-asl:1.9.7"
233     compile "org.codehaus.jackson:jackson-mapper-asl:1.9.7"
234     compile project(':samza-api')
235     compile project(":samza-core_$scalaVersion")
236     compile "org.slf4j:slf4j-api:$slf4jVersion"
237     runtime "org.apache.httpcomponents:httpclient:4.5.2"
238     runtime "org.apache.httpcomponents:httpcore:4.4.5"
239     testCompile "junit:junit:$junitVersion"
240     testCompile "org.mockito:mockito-all:$mockitoVersion"
241   }
242
243   repositories {
244     maven {
245       url "https://repo1.maven.org/maven2/"
246     }
247   }
248
249   checkstyle {
250     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
251     toolVersion = "$checkstyleVersion"
252   }
253 }
254
255
256 project(":samza-autoscaling_$scalaVersion") {
257   apply plugin: 'scala'
258   apply plugin: 'checkstyle'
259
260   // Force scala joint compilation
261   sourceSets.main.scala.srcDir "src/main/java"
262   sourceSets.test.scala.srcDir "src/test/java"
263
264   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
265   // tasks.compileTestJava.enabled = false
266   sourceSets.main.java.srcDirs = []
267   sourceSets.test.java.srcDirs = []
268
269   dependencies {
270     compile project(':samza-api')
271     compile project(":samza-core_$scalaVersion")
272     compile "org.scala-lang:scala-library:$scalaLibVersion"
273     compile "org.slf4j:slf4j-api:$slf4jVersion"
274     compile "net.sf.jopt-simple:jopt-simple:$joptSimpleVersion"
275     compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion"
276     compile "org.eclipse.jetty:jetty-webapp:$jettyVersion"
277     compile("org.apache.hadoop:hadoop-yarn-client:$yarnVersion") {
278       exclude module: 'slf4j-log4j12'
279       exclude module: 'servlet-api'
280     }
281     compile("org.apache.hadoop:hadoop-common:$yarnVersion") {
282       exclude module: 'slf4j-log4j12'
283       exclude module: 'servlet-api'
284     }
285     compile "org.apache.httpcomponents:httpclient:$httpClientVersion"
286     testCompile "junit:junit:$junitVersion"
287     testCompile "org.mockito:mockito-core:$mockitoVersion"
288     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
289   }
290
291   checkstyle {
292     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
293     toolVersion = "$checkstyleVersion"
294   }
295 }
296
297 project(':samza-elasticsearch') {
298   apply plugin: 'java'
299
300   dependencies {
301     compile project(':samza-api')
302     compile project(":samza-core_$scalaVersion")
303     compile "org.elasticsearch:elasticsearch:$elasticsearchVersion"
304     compile "com.google.guava:guava:$guavaVersion"
305     compile "org.slf4j:slf4j-api:$slf4jVersion"
306     testCompile "junit:junit:$junitVersion"
307     testCompile "org.mockito:mockito-core:$mockitoVersion"
308
309     testRuntime "org.slf4j:slf4j-simple:$slf4jVersion"
310   }
311 }
312
313 project(':samza-sql') {
314   apply plugin: 'java'
315
316   dependencies {
317     compile project(':samza-api')
318     compile project(":samza-kafka_$scalaVersion")
319     compile "org.apache.avro:avro:$avroVersion"
320     compile "org.apache.calcite:calcite-core:$calciteVersion"
321     compile "org.slf4j:slf4j-api:$slf4jVersion"
322
323     testCompile project(":samza-test_$scalaVersion")
324     testCompile "junit:junit:$junitVersion"
325     testCompile "org.mockito:mockito-core:$mockitoVersion"
326
327     testRuntime "org.slf4j:slf4j-simple:$slf4jVersion"
328   }
329 }
330
331 project(':samza-tools') {
332   apply plugin: 'java'
333
334   dependencies {
335     compile project(':samza-sql')
336     compile project(':samza-api')
337     compile project(':samza-azure')
338     compile "log4j:log4j:$log4jVersion"
339     compile "org.slf4j:slf4j-api:$slf4jVersion"
340     compile "org.slf4j:slf4j-log4j12:$slf4jVersion"
341     compile "commons-cli:commons-cli:$commonsCliVersion"
342     compile "org.apache.avro:avro:$avroVersion"
343     compile "org.apache.commons:commons-lang3:$commonsLang3Version"
344     compile "org.apache.kafka:kafka-clients:$kafkaVersion"
345   }
346
347   tasks.create(name: "releaseToolsTarGz", dependsOn: configurations.archives.artifacts, type: Tar) {
348     into "samza-tools-${version}"
349     compression = Compression.GZIP
350     from(project.file("./scripts")) { into "scripts/" }
351     from(project.file("./config")) { into "config/" }
352     from(project(':samza-shell').file("src/main/bash/run-class.sh")) { into "scripts/" }
353     from(configurations.runtime) { into("lib/") }
354     from(configurations.archives.artifacts.files) { into("lib/") }
355     duplicatesStrategy 'exclude'
356   }
357 }
358
359 project(":samza-kafka_$scalaVersion") {
360   apply plugin: 'scala'
361
362   // Force scala joint compilation
363   sourceSets.main.scala.srcDir "src/main/java"
364   sourceSets.test.scala.srcDir "src/test/java"
365
366   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
367   // tasks.compileTestJava.enabled = false
368   sourceSets.main.java.srcDirs = []
369   sourceSets.test.java.srcDirs = []
370
371   configurations {
372     // Remove transitive dependencies from Zookeeper that we don't want.
373     compile.exclude group: 'javax.jms', module: 'jms'
374     compile.exclude group: 'com.sun.jdmk', module: 'jmxtools'
375     compile.exclude group: 'com.sun.jmx', module: 'jmxri'
376   }
377
378   dependencies {
379     compile project(':samza-api')
380     compile project(":samza-core_$scalaVersion")
381     compile "log4j:log4j:$log4jVersion"
382     compile "org.scala-lang:scala-library:$scalaLibVersion"
383     compile "com.101tec:zkclient:$zkClientVersion"
384     compile "org.apache.zookeeper:zookeeper:$zookeeperVersion"
385     compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion"
386     compile "org.apache.kafka:kafka_$scalaVersion:$kafkaVersion"
387     compile "org.apache.kafka:kafka-clients:$kafkaVersion"
388     testCompile "org.apache.kafka:kafka_$scalaVersion:$kafkaVersion:test"
389     testCompile "org.apache.kafka:kafka-clients:$kafkaVersion:test"
390     testCompile "junit:junit:$junitVersion"
391     testCompile "org.mockito:mockito-core:$mockitoVersion"
392     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
393     testCompile project(":samza-core_$scalaVersion").sourceSets.test.output
394
395     // Logging in tests is good.
396     testRuntime "org.slf4j:slf4j-simple:$slf4jVersion"
397   }
398
399   test {
400     // Bump up the heap so we can start ZooKeeper and Kafka brokers.
401     minHeapSize = "1560m"
402     maxHeapSize = "1560m"
403     jvmArgs = ["-XX:+UseConcMarkSweepGC", "-server"]
404     // There appear to be issues between TestKafkaSystemAdmin and
405     // TestKafkaCheckpointManager both running brokeres and ZK. Restarting the
406     // gradle worker after every test clears things up. These tests should be
407     // moved to the integration test suite.
408     forkEvery = 1
409   }
410 }
411
412 project(':samza-log4j') {
413   apply plugin: 'java'
414   apply plugin: 'checkstyle'
415
416   dependencies {
417     compile "log4j:log4j:$log4jVersion"
418     compile project(':samza-api')
419     compile project(":samza-core_$scalaVersion")
420     compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion"
421     testCompile "junit:junit:$junitVersion"
422   }
423
424   checkstyle {
425     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
426     toolVersion = "$checkstyleVersion"
427   }
428 }
429
430 project(":samza-yarn_$scalaVersion") {
431   apply plugin: 'scala'
432   apply plugin: 'lesscss'
433
434   // Force scala joint compilation
435   sourceSets.main.scala.srcDir "src/main/java"
436   sourceSets.test.scala.srcDir "src/test/java"
437
438   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
439   // tasks.compileTestJava.enabled = false
440   sourceSets.main.java.srcDirs = []
441   sourceSets.test.java.srcDirs = []
442
443   dependencies {
444     compile project(':samza-api')
445     compile project(":samza-core_$scalaVersion")
446     compile "org.scala-lang:scala-library:$scalaLibVersion"
447     compile "org.scala-lang:scala-compiler:$scalaLibVersion"
448     compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion"
449     compile "commons-httpclient:commons-httpclient:$commonsHttpClientVersion"
450     compile("org.apache.hadoop:hadoop-yarn-api:$yarnVersion") {
451       exclude module: 'slf4j-log4j12'
452     }
453     compile("org.apache.hadoop:hadoop-yarn-common:$yarnVersion") {
454       exclude module: 'slf4j-log4j12'
455       exclude module: 'servlet-api'
456     }
457     compile("org.apache.hadoop:hadoop-yarn-client:$yarnVersion") {
458       exclude module: 'slf4j-log4j12'
459       exclude module: 'servlet-api'
460     }
461     compile("org.apache.hadoop:hadoop-common:$yarnVersion") {
462       exclude module: 'slf4j-log4j12'
463       exclude module: 'servlet-api'
464       // Exclude because YARN's 3.4.5 ZK version is incompatbile with Kafka's 3.3.4.
465       exclude module: 'zookeeper'
466     }
467     compile("org.apache.hadoop:hadoop-hdfs:$yarnVersion") {
468       exclude module: 'slf4j-log4j12'
469       exclude module: 'servlet-api'
470     }
471     compile("org.scalatra:scalatra_$scalaVersion:$scalatraVersion") {
472       exclude module: 'scala-compiler'
473       exclude module: 'slf4j-api'
474     }
475     compile("org.scalatra:scalatra-scalate_$scalaVersion:$scalatraVersion") {
476       exclude module: 'scala-compiler'
477       exclude module: 'slf4j-api'
478     }
479     compile "joda-time:joda-time:$jodaTimeVersion"
480     compile "org.apache.zookeeper:zookeeper:$zookeeperVersion"
481     testCompile "junit:junit:$junitVersion"
482     testCompile "org.mockito:mockito-core:$mockitoVersion"
483     testCompile project(":samza-core_$scalaVersion").sourceSets.test.output
484     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
485   }
486
487   repositories {
488     maven {
489       url "http://repo.typesafe.com/typesafe/releases"
490     }
491   }
492
493   lesscss {
494     source = fileTree('src/main/less') {
495       include 'main.less'
496     }
497     dest = "$buildDir/resources/main/scalate/css"
498   }
499
500   jar.dependsOn("lesscss")
501 }
502
503 project(":samza-shell") {
504   apply plugin: 'java'
505
506   configurations {
507     gradleShell
508   }
509
510   dependencies {
511     gradleShell project(":samza-core_$scalaVersion")
512     gradleShell project(":samza-kafka_$scalaVersion")
513     gradleShell project(":samza-test_$scalaVersion")
514     gradleShell project(":samza-yarn_$scalaVersion")
515     gradleShell "org.slf4j:slf4j-log4j12:$slf4jVersion"
516     gradleShell "log4j:log4j:1.2.16"
517   }
518
519   task shellTarGz(type: Tar) {
520     compression = Compression.GZIP
521     classifier = 'dist'
522     from 'src/main/bash'
523     from 'src/main/resources'
524     from 'src/main/visualizer'
525   }
526
527   artifacts {
528     archives(shellTarGz) {
529       name 'samza-shell'
530       classifier 'dist'
531     }
532   }
533
534   // Usage: ./gradlew samza-shell:runJob \
535   //  -PconfigPath=file:///path/to/job/config.properties
536   task runJob(type:JavaExec) {
537     description 'To run a job (defined in a properties file)'
538     main = 'org.apache.samza.job.JobRunner'
539     classpath = configurations.gradleShell
540     if (project.hasProperty('configPath')) args += ['--config-path', configPath]
541     jvmArgs = ["-Dlog4j.configuration=file:src/main/resources/log4j-console.xml"]
542   }
543
544   // Usage: ./gradlew samza-shell:checkpointTool \
545   //  -PconfigPath=file:///path/to/job/config.properties -PnewOffsets=file:///path/to/new/offsets.properties
546   task checkpointTool(type:JavaExec) {
547     description 'Command-line tool to inspect and manipulate the job’s checkpoint'
548     main = 'org.apache.samza.checkpoint.CheckpointTool'
549     classpath = configurations.gradleShell
550     if (project.hasProperty('configPath')) args += ['--config-path', configPath]
551     if (project.hasProperty('newOffsets')) args += ['--new-offsets', newOffsets]
552     jvmArgs = ["-Dlog4j.configuration=file:src/main/resources/log4j-console.xml"]
553   }
554
555   // Usage: ./gradlew samza-shell:kvPerformanceTest
556   //  -PconfigPath=file:///path/to/job/config.properties
557   task kvPerformanceTest(type:JavaExec) {
558     description 'Command-line tool to run key-value performance tests'
559     main = 'org.apache.samza.test.performance.TestKeyValuePerformance'
560     classpath = configurations.gradleShell
561     if (project.hasProperty('configPath')) args += ['--config-path', configPath]
562     jvmArgs = ["-Dlog4j.configuration=file:src/main/resources/log4j-console.xml"]
563   }
564 }
565
566 project(":samza-kv_$scalaVersion") {
567   apply plugin: 'scala'
568   apply plugin: 'checkstyle'
569
570   // Force scala joint compilation
571   sourceSets.main.scala.srcDir "src/main/java"
572   sourceSets.test.scala.srcDir "src/test/java"
573
574   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
575   // tasks.compileTestJava.enabled = false
576   sourceSets.main.java.srcDirs = []
577   sourceSets.test.java.srcDirs = []
578
579
580   dependencies {
581     compile project(':samza-api')
582     compile project(":samza-core_$scalaVersion")
583     compile "org.scala-lang:scala-library:$scalaLibVersion"
584     testCompile "junit:junit:$junitVersion"
585     testCompile "org.mockito:mockito-core:$mockitoVersion"
586   }
587
588   checkstyle {
589     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
590     toolVersion = "$checkstyleVersion"
591   }
592 }
593
594 project(":samza-kv-inmemory_$scalaVersion") {
595   apply plugin: 'scala'
596
597   // Force scala joint compilation
598   sourceSets.main.scala.srcDir "src/main/java"
599   sourceSets.test.scala.srcDir "src/test/java"
600
601   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
602   // tasks.compileTestJava.enabled = false
603   sourceSets.main.java.srcDirs = []
604   sourceSets.test.java.srcDirs = []
605
606   dependencies {
607     compile project(':samza-api')
608     compile project(":samza-core_$scalaVersion")
609     compile project(":samza-kv_$scalaVersion")
610     compile "org.scala-lang:scala-library:$scalaLibVersion"
611     compile "com.google.guava:guava:$guavaVersion"
612     testCompile "junit:junit:$junitVersion"
613   }
614 }
615
616 project(":samza-kv-rocksdb_$scalaVersion") {
617   apply plugin: 'scala'
618
619   // Force scala joint compilation
620   sourceSets.main.scala.srcDir "src/main/java"
621   sourceSets.test.scala.srcDir "src/test/java"
622
623   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
624   // tasks.compileTestJava.enabled = false
625   sourceSets.main.java.srcDirs = []
626   sourceSets.test.java.srcDirs = []
627
628   dependencies {
629     compile project(':samza-api')
630     compile project(":samza-core_$scalaVersion")
631     compile project(":samza-kv_$scalaVersion")
632     compile "org.scala-lang:scala-library:$scalaLibVersion"
633     compile "org.rocksdb:rocksdbjni:$rocksdbVersion"
634     testCompile "junit:junit:$junitVersion"
635     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
636   }
637 }
638
639 project(":samza-hdfs_$scalaVersion") {
640   apply plugin: 'scala'
641
642   // Force scala joint compilation
643   sourceSets.main.scala.srcDir "src/main/java"
644   sourceSets.test.scala.srcDir "src/test/java"
645   sourceSets.main.java.srcDirs = []
646
647   dependencies {
648     compile project(':samza-api')
649     compile project(":samza-core_$scalaVersion")
650     // currently hdfs system producer/consumer do depend on yarn for two things:
651     // 1. staging directory 2. security
652     // SAMZA-1032 to solve the staging directory dependency
653     compile project(":samza-yarn_$scalaVersion")
654     compile "org.scala-lang:scala-library:$scalaLibVersion"
655     compile("org.apache.hadoop:hadoop-hdfs:$yarnVersion") {
656       exclude module: 'slf4j-log4j12'
657       exclude module: 'servlet-api'
658     }
659     compile("org.apache.hadoop:hadoop-common:$yarnVersion") {
660       exclude module: 'slf4j-log4j12'
661       exclude module: 'servlet-api'
662       exclude module: 'zookeeper'
663     }
664
665     testCompile "junit:junit:$junitVersion"
666     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
667     testCompile "org.apache.hadoop:hadoop-minicluster:$yarnVersion"
668   }
669 }
670
671 project(":samza-rest") {
672   apply plugin: 'java'
673
674   dependencies {
675     compile project(":samza-shell")
676     compile project(":samza-core_$scalaVersion")
677
678     runtime "org.slf4j:slf4j-log4j12:$slf4jVersion"
679     compile "com.google.guava:guava:$guavaVersion"
680     compile "org.glassfish.jersey.core:jersey-server:$jerseyVersion"
681     compile "org.glassfish.jersey.containers:jersey-container-servlet-core:$jerseyVersion"
682     compile "org.glassfish.jersey.containers:jersey-container-jetty-http:$jerseyVersion"
683     compile "org.glassfish.jersey.media:jersey-media-moxy:$jerseyVersion"
684     compile "org.eclipse.jetty.aggregate:jetty-all:$jettyVersion"
685     compile "commons-httpclient:commons-httpclient:$commonsHttpClientVersion"
686     compile("org.apache.hadoop:hadoop-yarn-client:$yarnVersion") {
687       exclude module: 'slf4j-log4j12'
688       exclude module: 'servlet-api'
689       exclude group: 'com.sun.jersey'
690     }
691     runtime("org.apache.hadoop:hadoop-yarn-api:$yarnVersion") {
692       exclude module: 'slf4j-log4j12'
693       exclude module: 'servlet-api'
694       exclude group: 'com.sun.jersey'
695     }
696
697     testCompile "junit:junit:$junitVersion"
698     testCompile "org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2:$jerseyVersion"
699     testCompile "org.mockito:mockito-core:$mockitoVersion"
700   }
701
702   tasks.create(name: "releaseRestServiceTar", type: Tar) {
703     description 'Build a tarball containing the samza-rest component and its dependencies'
704     compression = Compression.GZIP
705     from(file("$projectDir/src/main/config")) { into "config/" }
706     from(file("$projectDir/src/main/resources/log4j.xml")) { into "bin/" }
707     from(file("$projectDir/src/main/bash/run-samza-rest-service.sh")) { into "bin/" }
708     from(project(':samza-shell').file("src/main/bash/run-class.sh")) { into "bin/" }
709     from '../LICENSE'
710     from '../NOTICE'
711     from(configurations.runtime) { into("lib/") }
712     from(jar) { into("lib/") }
713   }
714
715   tasks.create(name: "restTarGz", type: Tar) {
716     description 'Build a tarball containing the samza-rest supplementary files'
717     compression = Compression.GZIP
718     from 'src/main/bash'
719     from 'src/main/resources'
720     from(project(':samza-shell').file("src/main/bash/run-class.sh"))
721   }
722
723   artifacts {
724     archives(restTarGz) {
725       name 'samza-rest-scripts'
726       classifier 'dist'
727     }
728   }
729 }
730
731 project(":samza-test_$scalaVersion") {
732   apply plugin: 'scala'
733   apply plugin: 'checkstyle'
734
735   // Force scala joint compilation
736   sourceSets.main.scala.srcDir "src/main/java"
737   sourceSets.test.scala.srcDir "src/test/java"
738
739   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
740   // tasks.compileTestJava.enabled = false
741   sourceSets.main.java.srcDirs = []
742   sourceSets.test.java.srcDirs = []
743
744   configurations {
745     // Remove transitive dependencies from Zookeeper that we don't want.
746     compile.exclude group: 'javax.jms', module: 'jms'
747     compile.exclude group: 'com.sun.jdmk', module: 'jmxtools'
748     compile.exclude group: 'com.sun.jmx', module: 'jmxri'
749   }
750
751   dependencies {
752     compile project(':samza-api')
753     compile project(":samza-kv-inmemory_$scalaVersion")
754     compile project(":samza-kv-rocksdb_$scalaVersion")
755     compile project(":samza-core_$scalaVersion")
756     runtime project(":samza-log4j")
757     runtime project(":samza-yarn_$scalaVersion")
758     runtime project(":samza-kafka_$scalaVersion")
759     runtime project(":samza-hdfs_$scalaVersion")
760     compile "org.scala-lang:scala-library:$scalaLibVersion"
761     compile "net.sf.jopt-simple:jopt-simple:$joptSimpleVersion"
762     compile "javax.mail:mail:1.4"
763     compile "org.apache.kafka:kafka_$scalaVersion:$kafkaVersion"
764     compile "junit:junit:$junitVersion"
765     compile "org.hamcrest:hamcrest-all:$hamcrestVersion"
766     testCompile "org.apache.kafka:kafka_$scalaVersion:$kafkaVersion:test"
767     testCompile "com.101tec:zkclient:$zkClientVersion"
768     testCompile project(":samza-kafka_$scalaVersion")
769     testCompile "org.apache.kafka:kafka_$scalaVersion:$kafkaVersion:test"
770     testCompile "org.apache.kafka:kafka-clients:$kafkaVersion:test"
771     testCompile project(":samza-core_$scalaVersion").sourceSets.test.output
772     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
773     testCompile "org.mockito:mockito-core:$mockitoVersion"
774     testRuntime "org.slf4j:slf4j-simple:$slf4jVersion"
775   }
776
777   test {
778     // Bump up the heap so we can run KV store tests.
779     minHeapSize = "1560m"
780     maxHeapSize = "1560m"
781     jvmArgs = ["-XX:+UseConcMarkSweepGC", "-server"]
782   }
783
784   checkstyle {
785     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
786     toolVersion = "$checkstyleVersion"
787   }
788
789   tasks.create(name: "releaseTestJobs", dependsOn: configurations.archives.artifacts, type: Tar) {
790     description 'Build an integration test tarball'
791     compression = Compression.GZIP
792     from(file("$projectDir/src/main/config")) { into "config/" }
793     from(file("$projectDir/src/main/resources")) { into "lib/" }
794     from(project(':samza-shell').file("src/main/bash")) { into "bin/" }
795     from(file("$projectDir/src/main/python/ghostface_killah.py")) { into "bin/"}
796     from(project(':samza-shell').file("src/main/resources")) { into "lib/" }
797     from(project(':samza-shell').file("src/main/resources/log4j-console.xml")) { into "bin/" }
798     from '../LICENSE'
799     from '../NOTICE'
800     from(configurations.runtime) { into("lib/") }
801     from(configurations.archives.artifacts.files) { into("lib/") }
802   }
803 }