SAMZA-1428: Fix scala 2.10 compilation issue with java 8 interface st…
[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     '**/.classpath',
56     '**/.cache/**',
57     '**/.git/**',
58     '**/.gitignore',
59     '**/.gradle/**',
60     '**/.idea/**',
61     '**/.project',
62     '**/.settings/**',
63     '**/.DS_Store/**',
64     '**/bootstrap.css.map',
65     '**/bootstrap.min.css',
66     '**/bootstrap.min.js',
67     '**/build/**',
68     '**/font-awesome.min.css',
69     '**/jquery-1.11.1.min.js',
70     '**/jquery.tablesorter.min.js',
71     '**/non-responsive.less',
72     '**/ropa-sans.css',
73     '**/syntax.css',
74     '**/d3.v3.min.js',
75     '**/dagre-d3.min.js',
76     '.idea/**',
77     '.reviewboardrc',
78     'docs/_site/**',
79     'docs/sitemap.xml',
80     'docs/learn/documentation/*/api/javadocs/**',
81     'docs/Gemfile.lock',
82     'gradle/wrapper/**',
83     'gradlew',
84     'gradlew.bat',
85     'samza-test/state/**',
86     'README.md',
87     'RELEASE.md',
88     'samza-test/src/main/resources/**',
89     'samza-hdfs/src/main/resources/**',
90     'samza-hdfs/src/test/resources/**',
91     'out/**'
92   ]
93 }
94
95 allprojects {
96   apply plugin: 'idea'
97
98   // For all scala compilation, add extra compiler options, taken from version-specific
99   // dependency-versions-scala file applied above.
100   tasks.withType(ScalaCompile) {
101     scalaCompileOptions.additionalParameters = [ scalaOptions ]
102   }
103 }
104
105 subprojects {
106   apply plugin: 'eclipse'
107   apply plugin: 'project-report'
108
109   tasks.withType(Test) {
110     test {
111       testLogging {
112         showStackTraces = true
113         showExceptions = true
114         showCauses = true
115         displayGranularity = maxGranularity
116         exceptionFormat = 'full'
117       }
118     }
119   }
120 }
121
122 project(':samza-api') {
123   apply plugin: 'java'
124   apply plugin: 'checkstyle'
125
126   dependencies {
127     compile "org.slf4j:slf4j-api:$slf4jVersion"
128     testCompile "junit:junit:$junitVersion"
129     testCompile "org.mockito:mockito-all:$mockitoVersion"
130   }
131   checkstyle {
132     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
133     toolVersion = "$checkstyleVersion"
134   }
135 }
136
137 project(":samza-core_$scalaVersion") {
138   apply plugin: 'scala'
139   apply plugin: 'checkstyle'
140
141   // Force scala joint compilation
142   sourceSets.main.scala.srcDir "src/main/java"
143   sourceSets.test.scala.srcDir "src/test/java"
144
145   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
146   // tasks.compileTestJava.enabled = false
147   sourceSets.main.java.srcDirs = []
148   sourceSets.test.java.srcDirs = []
149
150   jar {
151     manifest {
152       attributes("Implementation-Version": "$version")
153     }
154   }
155
156   dependencies {
157     compile project(':samza-api')
158     compile "com.101tec:zkclient:$zkClientVersion"
159     compile "com.google.guava:guava:$guavaVersion"
160     compile "net.sf.jopt-simple:jopt-simple:$joptSimpleVersion"
161     compile "org.apache.commons:commons-collections4:$apacheCommonsCollections4Version"
162     compile "org.apache.commons:commons-lang3:$commonsLang3Version"
163     compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion"
164     compile "org.eclipse.jetty:jetty-webapp:$jettyVersion"
165     compile "org.scala-lang:scala-library:$scalaLibVersion"
166     compile "org.slf4j:slf4j-api:$slf4jVersion"
167     testCompile project(":samza-api").sourceSets.test.output
168     testCompile "junit:junit:$junitVersion"
169     testCompile "org.mockito:mockito-all:$mockitoVersion"
170     testCompile "org.powermock:powermock-api-mockito:$powerMockVersion"
171     testCompile "org.powermock:powermock-core:$powerMockVersion"
172     testCompile "org.powermock:powermock-module-junit4:$powerMockVersion"
173     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
174   }
175
176   checkstyle {
177     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
178     toolVersion = "$checkstyleVersion"
179   }
180 }
181
182
183 project(':samza-azure') {
184   apply plugin: 'java'
185   apply plugin: 'checkstyle'
186
187   dependencies {
188     compile "com.microsoft.azure:azure-storage:5.3.1"
189     compile "com.fasterxml.jackson.core:jackson-core:2.8.8"
190     compile project(':samza-api')
191     compile project(":samza-core_$scalaVersion")
192     compile "org.slf4j:slf4j-api:$slf4jVersion"
193     testCompile "junit:junit:$junitVersion"
194   }
195   checkstyle {
196     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
197     toolVersion = "$checkstyleVersion"
198   }
199 }
200
201
202 project(":samza-autoscaling_$scalaVersion") {
203   apply plugin: 'scala'
204   apply plugin: 'checkstyle'
205
206   // Force scala joint compilation
207   sourceSets.main.scala.srcDir "src/main/java"
208   sourceSets.test.scala.srcDir "src/test/java"
209
210   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
211   // tasks.compileTestJava.enabled = false
212   sourceSets.main.java.srcDirs = []
213   sourceSets.test.java.srcDirs = []
214
215   dependencies {
216     compile project(':samza-api')
217     compile project(":samza-core_$scalaVersion")
218     compile "org.scala-lang:scala-library:$scalaLibVersion"
219     compile "org.slf4j:slf4j-api:$slf4jVersion"
220     compile "net.sf.jopt-simple:jopt-simple:$joptSimpleVersion"
221     compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion"
222     compile "org.eclipse.jetty:jetty-webapp:$jettyVersion"
223     compile("org.apache.hadoop:hadoop-yarn-client:$yarnVersion") {
224       exclude module: 'slf4j-log4j12'
225       exclude module: 'servlet-api'
226     }
227     compile("org.apache.hadoop:hadoop-common:$yarnVersion") {
228       exclude module: 'slf4j-log4j12'
229       exclude module: 'servlet-api'
230     }
231     compile "org.apache.httpcomponents:httpclient:$httpClientVersion"
232     testCompile "junit:junit:$junitVersion"
233     testCompile "org.mockito:mockito-all:$mockitoVersion"
234     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
235   }
236
237   checkstyle {
238     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
239     toolVersion = "$checkstyleVersion"
240   }
241 }
242
243 project(':samza-elasticsearch') {
244   apply plugin: 'java'
245
246   dependencies {
247     compile project(':samza-api')
248     compile project(":samza-core_$scalaVersion")
249     compile "org.elasticsearch:elasticsearch:$elasticsearchVersion"
250     compile "com.google.guava:guava:$guavaVersion"
251     compile "org.slf4j:slf4j-api:$slf4jVersion"
252     testCompile "junit:junit:$junitVersion"
253     testCompile "org.mockito:mockito-all:$mockitoVersion"
254
255     // Logging in tests is good.
256     testRuntime "org.slf4j:slf4j-simple:$slf4jVersion"
257   }
258 }
259
260 project(":samza-kafka_$scalaVersion") {
261   apply plugin: 'scala'
262
263   // Force scala joint compilation
264   sourceSets.main.scala.srcDir "src/main/java"
265   sourceSets.test.scala.srcDir "src/test/java"
266
267   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
268   // tasks.compileTestJava.enabled = false
269   sourceSets.main.java.srcDirs = []
270   sourceSets.test.java.srcDirs = []
271
272   configurations {
273     // Remove transitive dependencies from Zookeeper that we don't want.
274     compile.exclude group: 'javax.jms', module: 'jms'
275     compile.exclude group: 'com.sun.jdmk', module: 'jmxtools'
276     compile.exclude group: 'com.sun.jmx', module: 'jmxri'
277   }
278
279   dependencies {
280     compile project(':samza-api')
281     compile project(":samza-core_$scalaVersion")
282     compile "org.scala-lang:scala-library:$scalaLibVersion"
283     compile "com.101tec:zkclient:$zkClientVersion"
284     compile "org.apache.zookeeper:zookeeper:$zookeeperVersion"
285     compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion"
286     compile "org.apache.kafka:kafka_$scalaVersion:$kafkaVersion"
287     compile "org.apache.kafka:kafka-clients:$kafkaVersion"
288     testCompile "org.apache.kafka:kafka_$scalaVersion:$kafkaVersion:test"
289     testCompile "org.apache.kafka:kafka-clients:$kafkaVersion:test"
290     testCompile "junit:junit:$junitVersion"
291     testCompile "org.mockito:mockito-all:$mockitoVersion"
292     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
293     testCompile project(":samza-core_$scalaVersion").sourceSets.test.output
294
295     // Logging in tests is good.
296     testRuntime "org.slf4j:slf4j-simple:$slf4jVersion"
297   }
298
299   test {
300     // Bump up the heap so we can start ZooKeeper and Kafka brokers.
301     minHeapSize = "1560m"
302     maxHeapSize = "1560m"
303     jvmArgs = ["-XX:+UseConcMarkSweepGC", "-server"]
304     // There appear to be issues between TestKafkaSystemAdmin and
305     // TestKafkaCheckpointManager both running brokeres and ZK. Restarting the
306     // gradle worker after every test clears things up. These tests should be
307     // moved to the integration test suite.
308     forkEvery = 1
309   }
310 }
311
312 project(':samza-log4j') {
313   apply plugin: 'java'
314   apply plugin: 'checkstyle'
315
316   dependencies {
317     compile "log4j:log4j:$log4jVersion"
318     compile project(':samza-api')
319     compile project(":samza-core_$scalaVersion")
320     compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion"
321     testCompile "junit:junit:$junitVersion"
322   }
323
324   checkstyle {
325     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
326     toolVersion = "$checkstyleVersion"
327   }
328 }
329
330 project(":samza-yarn_$scalaVersion") {
331   apply plugin: 'scala'
332   apply plugin: 'lesscss'
333
334   // Force scala joint compilation
335   sourceSets.main.scala.srcDir "src/main/java"
336   sourceSets.test.scala.srcDir "src/test/java"
337
338   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
339   // tasks.compileTestJava.enabled = false
340   sourceSets.main.java.srcDirs = []
341   sourceSets.test.java.srcDirs = []
342
343   dependencies {
344     compile project(':samza-api')
345     compile project(":samza-core_$scalaVersion")
346     compile "org.scala-lang:scala-library:$scalaLibVersion"
347     compile "org.scala-lang:scala-compiler:$scalaLibVersion"
348     compile "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion"
349     compile "commons-httpclient:commons-httpclient:$commonsHttpClientVersion"
350     compile("org.apache.hadoop:hadoop-yarn-api:$yarnVersion") {
351       exclude module: 'slf4j-log4j12'
352     }
353     compile("org.apache.hadoop:hadoop-yarn-common:$yarnVersion") {
354       exclude module: 'slf4j-log4j12'
355       exclude module: 'servlet-api'
356     }
357     compile("org.apache.hadoop:hadoop-yarn-client:$yarnVersion") {
358       exclude module: 'slf4j-log4j12'
359       exclude module: 'servlet-api'
360     }
361     compile("org.apache.hadoop:hadoop-common:$yarnVersion") {
362       exclude module: 'slf4j-log4j12'
363       exclude module: 'servlet-api'
364       // Exclude because YARN's 3.4.5 ZK version is incompatbile with Kafka's 3.3.4.
365       exclude module: 'zookeeper'
366     }
367     compile("org.apache.hadoop:hadoop-hdfs:$yarnVersion") {
368       exclude module: 'slf4j-log4j12'
369       exclude module: 'servlet-api'
370     }
371     compile("org.scalatra:scalatra_$scalaVersion:$scalatraVersion") {
372       exclude module: 'scala-compiler'
373       exclude module: 'slf4j-api'
374     }
375     compile("org.scalatra:scalatra-scalate_$scalaVersion:$scalatraVersion") {
376       exclude module: 'scala-compiler'
377       exclude module: 'slf4j-api'
378     }
379     compile "joda-time:joda-time:$jodaTimeVersion"
380     compile "org.apache.zookeeper:zookeeper:$zookeeperVersion"
381     testCompile "junit:junit:$junitVersion"
382     testCompile "org.mockito:mockito-all:$mockitoVersion"
383     testCompile project(":samza-core_$scalaVersion").sourceSets.test.output
384     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
385   }
386
387   repositories {
388     maven {
389       url "http://repo.typesafe.com/typesafe/releases"
390     }
391   }
392
393   lesscss {
394     source = fileTree('src/main/less') {
395       include 'main.less'
396     }
397     dest = "$buildDir/resources/main/scalate/css"
398   }
399
400   jar.dependsOn("lesscss")
401 }
402
403 project(":samza-shell") {
404   apply plugin: 'java'
405
406   configurations {
407     gradleShell
408   }
409
410   dependencies {
411     gradleShell project(":samza-core_$scalaVersion")
412     gradleShell project(":samza-kafka_$scalaVersion")
413     gradleShell project(":samza-test_$scalaVersion")
414     gradleShell project(":samza-yarn_$scalaVersion")
415     gradleShell "org.slf4j:slf4j-log4j12:$slf4jVersion"
416     gradleShell "log4j:log4j:1.2.16"
417   }
418
419   task shellTarGz(type: Tar) {
420     compression = Compression.GZIP
421     classifier = 'dist'
422     from 'src/main/bash'
423     from 'src/main/resources'
424     from 'src/main/visualizer'
425   }
426
427   artifacts {
428     archives(shellTarGz) {
429       name 'samza-shell'
430       classifier 'dist'
431     }
432   }
433
434   // Usage: ./gradlew samza-shell:runJob \
435   //    -PconfigPath=file:///path/to/job/config.properties
436   task runJob(type:JavaExec) {
437     description 'To run a job (defined in a properties file)'
438     main = 'org.apache.samza.job.JobRunner'
439     classpath = configurations.gradleShell
440     if (project.hasProperty('configPath')) args += ['--config-path', configPath]
441     jvmArgs = ["-Dlog4j.configuration=file:src/main/resources/log4j-console.xml"]
442   }
443
444   // Usage: ./gradlew samza-shell:checkpointTool \
445   //    -PconfigPath=file:///path/to/job/config.properties -PnewOffsets=file:///path/to/new/offsets.properties
446   task checkpointTool(type:JavaExec) {
447     description 'Command-line tool to inspect and manipulate the job’s checkpoint'
448     main = 'org.apache.samza.checkpoint.CheckpointTool'
449     classpath = configurations.gradleShell
450     if (project.hasProperty('configPath')) args += ['--config-path', configPath]
451     if (project.hasProperty('newOffsets')) args += ['--new-offsets', newOffsets]
452     jvmArgs = ["-Dlog4j.configuration=file:src/main/resources/log4j-console.xml"]
453   }
454
455   // Usage: ./gradlew samza-shell:kvPerformanceTest
456   //    -PconfigPath=file:///path/to/job/config.properties
457   task kvPerformanceTest(type:JavaExec) {
458     description 'Command-line tool to run key-value performance tests'
459     main = 'org.apache.samza.test.performance.TestKeyValuePerformance'
460     classpath = configurations.gradleShell
461     if (project.hasProperty('configPath')) args += ['--config-path', configPath]
462     jvmArgs = ["-Dlog4j.configuration=file:src/main/resources/log4j-console.xml"]
463   }
464 }
465
466 project(":samza-kv_$scalaVersion") {
467   apply plugin: 'scala'
468   apply plugin: 'checkstyle'
469
470   // Force scala joint compilation
471   sourceSets.main.scala.srcDir "src/main/java"
472   sourceSets.test.scala.srcDir "src/test/java"
473
474   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
475   // tasks.compileTestJava.enabled = false
476   sourceSets.main.java.srcDirs = []
477   sourceSets.test.java.srcDirs = []
478
479
480   dependencies {
481     compile project(':samza-api')
482     compile project(":samza-core_$scalaVersion")
483     compile "org.scala-lang:scala-library:$scalaLibVersion"
484     testCompile "junit:junit:$junitVersion"
485     testCompile "org.mockito:mockito-all:$mockitoVersion"
486   }
487
488   checkstyle {
489     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
490     toolVersion = "$checkstyleVersion"
491   }
492 }
493
494 project(":samza-kv-inmemory_$scalaVersion") {
495   apply plugin: 'scala'
496
497   dependencies {
498     compile project(':samza-api')
499     compile project(":samza-core_$scalaVersion")
500     compile project(":samza-kv_$scalaVersion")
501     compile "org.scala-lang:scala-library:$scalaLibVersion"
502     compile "com.google.guava:guava:$guavaVersion"
503     testCompile "junit:junit:$junitVersion"
504   }
505 }
506
507 project(":samza-kv-rocksdb_$scalaVersion") {
508   apply plugin: 'scala'
509
510   // Force scala joint compilation
511   sourceSets.main.scala.srcDir "src/main/java"
512   sourceSets.test.scala.srcDir "src/test/java"
513
514   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
515   // tasks.compileTestJava.enabled = false
516   sourceSets.main.java.srcDirs = []
517   sourceSets.test.java.srcDirs = []
518
519   dependencies {
520     compile project(':samza-api')
521     compile project(":samza-core_$scalaVersion")
522     compile project(":samza-kv_$scalaVersion")
523     compile "org.scala-lang:scala-library:$scalaLibVersion"
524     compile "org.rocksdb:rocksdbjni:$rocksdbVersion"
525     testCompile "junit:junit:$junitVersion"
526     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
527   }
528 }
529
530 project(":samza-hdfs_$scalaVersion") {
531   apply plugin: 'scala'
532
533   // Force scala joint compilation
534   sourceSets.main.scala.srcDir "src/main/java"
535   sourceSets.test.scala.srcDir "src/test/java"
536   sourceSets.main.java.srcDirs = []
537
538   dependencies {
539     compile project(':samza-api')
540     compile project(":samza-core_$scalaVersion")
541     // currently hdfs system producer/consumer do depend on yarn for two things:
542     // 1. staging directory 2. security
543     // SAMZA-1032 to solve the staging directory dependency
544     compile project(":samza-yarn_$scalaVersion")
545     compile "org.scala-lang:scala-library:$scalaLibVersion"
546     compile("org.apache.hadoop:hadoop-hdfs:$yarnVersion") {
547       exclude module: 'slf4j-log4j12'
548       exclude module: 'servlet-api'
549     }
550     compile("org.apache.hadoop:hadoop-common:$yarnVersion") {
551       exclude module: 'slf4j-log4j12'
552       exclude module: 'servlet-api'
553       exclude module: 'zookeeper'
554     }
555
556     testCompile "junit:junit:$junitVersion"
557     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
558     testCompile "org.apache.hadoop:hadoop-minicluster:$yarnVersion"
559   }
560 }
561
562 project(":samza-rest") {
563   apply plugin: 'java'
564
565   dependencies {
566     compile project(":samza-shell")
567     compile project(":samza-core_$scalaVersion")
568
569     runtime "org.slf4j:slf4j-log4j12:$slf4jVersion"
570     compile "com.google.guava:guava:$guavaVersion"
571     compile "org.glassfish.jersey.core:jersey-server:$jerseyVersion"
572     compile "org.glassfish.jersey.containers:jersey-container-servlet-core:$jerseyVersion"
573     compile "org.glassfish.jersey.containers:jersey-container-jetty-http:$jerseyVersion"
574     compile "org.glassfish.jersey.media:jersey-media-moxy:$jerseyVersion"
575     compile "org.eclipse.jetty.aggregate:jetty-all:$jettyVersion"
576     compile "commons-httpclient:commons-httpclient:$commonsHttpClientVersion"
577     compile("org.apache.hadoop:hadoop-yarn-client:$yarnVersion") {
578       exclude module: 'slf4j-log4j12'
579       exclude module: 'servlet-api'
580       exclude group: 'com.sun.jersey'
581     }
582     runtime("org.apache.hadoop:hadoop-yarn-api:$yarnVersion") {
583       exclude module: 'slf4j-log4j12'
584       exclude module: 'servlet-api'
585       exclude group: 'com.sun.jersey'
586     }
587
588     testCompile "junit:junit:$junitVersion"
589     testCompile "org.glassfish.jersey.test-framework.providers:jersey-test-framework-provider-grizzly2:$jerseyVersion"
590     testCompile "org.mockito:mockito-all:$mockitoVersion"
591   }
592
593   tasks.create(name: "releaseRestServiceTar", type: Tar) {
594     description 'Build a tarball containing the samza-rest component and its dependencies'
595     compression = Compression.GZIP
596     from(file("$projectDir/src/main/config")) { into "config/" }
597     from(file("$projectDir/src/main/resources/log4j.xml")) { into "bin/" }
598     from(file("$projectDir/src/main/bash/run-samza-rest-service.sh")) { into "bin/" }
599     from(project(':samza-shell').file("src/main/bash/run-class.sh")) { into "bin/" }
600     from '../LICENSE'
601     from '../NOTICE'
602     from(configurations.runtime) { into("lib/") }
603     from(jar) { into("lib/") }
604   }
605
606   tasks.create(name: "restTarGz", type: Tar) {
607     description 'Build a tarball containing the samza-rest supplementary files'
608     compression = Compression.GZIP
609     from 'src/main/bash'
610     from 'src/main/resources'
611     from(project(':samza-shell').file("src/main/bash/run-class.sh"))
612   }
613
614   artifacts {
615     archives(restTarGz) {
616       name 'samza-rest-scripts'
617       classifier 'dist'
618     }
619   }
620 }
621
622 project(":samza-test_$scalaVersion") {
623   apply plugin: 'scala'
624   apply plugin: 'checkstyle'
625
626   // Force scala joint compilation
627   sourceSets.main.scala.srcDir "src/main/java"
628   sourceSets.test.scala.srcDir "src/test/java"
629
630   // Disable the Javac compiler by forcing joint compilation by scalac. This is equivalent to setting
631   // tasks.compileTestJava.enabled = false
632   sourceSets.main.java.srcDirs = []
633   sourceSets.test.java.srcDirs = []
634
635   configurations {
636     // Remove transitive dependencies from Zookeeper that we don't want.
637     compile.exclude group: 'javax.jms', module: 'jms'
638     compile.exclude group: 'com.sun.jdmk', module: 'jmxtools'
639     compile.exclude group: 'com.sun.jmx', module: 'jmxri'
640   }
641
642   dependencies {
643     compile project(':samza-api')
644     compile project(":samza-kv-inmemory_$scalaVersion")
645     compile project(":samza-kv-rocksdb_$scalaVersion")
646     compile project(":samza-core_$scalaVersion")
647     runtime project(":samza-log4j")
648     runtime project(":samza-yarn_$scalaVersion")
649     runtime project(":samza-kafka_$scalaVersion")
650     runtime project(":samza-hdfs_$scalaVersion")
651     compile "org.scala-lang:scala-library:$scalaLibVersion"
652     compile "net.sf.jopt-simple:jopt-simple:$joptSimpleVersion"
653     compile "javax.mail:mail:1.4"
654     compile "org.apache.kafka:kafka_$scalaVersion:$kafkaVersion"
655     testCompile "org.apache.kafka:kafka_$scalaVersion:$kafkaVersion:test"
656     testCompile "com.101tec:zkclient:$zkClientVersion"
657     testCompile "junit:junit:$junitVersion"
658     testCompile project(":samza-kafka_$scalaVersion")
659     testCompile "org.apache.kafka:kafka_$scalaVersion:$kafkaVersion:test"
660     testCompile "org.apache.kafka:kafka-clients:$kafkaVersion:test"
661     testCompile project(":samza-core_$scalaVersion").sourceSets.test.output
662     testCompile "org.scalatest:scalatest_$scalaVersion:$scalaTestVersion"
663     testCompile "org.mockito:mockito-all:$mockitoVersion"
664     testRuntime "org.slf4j:slf4j-simple:$slf4jVersion"
665   }
666
667   test {
668     // Bump up the heap so we can run KV store tests.
669     minHeapSize = "1560m"
670     maxHeapSize = "1560m"
671     jvmArgs = ["-XX:+UseConcMarkSweepGC", "-server"]
672   }
673
674   checkstyle {
675     configFile = new File(rootDir, "checkstyle/checkstyle.xml")
676     toolVersion = "$checkstyleVersion"
677   }
678
679   tasks.create(name: "releaseTestJobs", dependsOn: configurations.archives.artifacts, type: Tar) {
680     description 'Build an integration test tarball'
681     compression = Compression.GZIP
682     from(file("$projectDir/src/main/config")) { into "config/" }
683     from(file("$projectDir/src/main/resources")) { into "lib/" }
684     from(project(':samza-shell').file("src/main/bash")) { into "bin/" }
685     from(file("$projectDir/src/main/python/ghostface_killah.py")) { into "bin/"}
686     from(project(':samza-shell').file("src/main/resources")) { into "lib/" }
687     from(project(':samza-shell').file("src/main/resources/log4j-console.xml")) { into "bin/" }
688     from '../LICENSE'
689     from '../NOTICE'
690     from(configurations.runtime) { into("lib/") }
691     from(configurations.archives.artifacts.files) { into("lib/") }
692   }
693 }