azkaban-aplcache

Define dependencies in one place (#1201) This is to promote

6/12/2017 9:27:26 PM

Details

diff --git a/azkaban-common/build.gradle b/azkaban-common/build.gradle
index b58111d..56fcccb 100644
--- a/azkaban-common/build.gradle
+++ b/azkaban-common/build.gradle
@@ -35,41 +35,39 @@ dependencies {
     compile project(':azkaban-spi')
     compile project(':azkaban-db')
 
-    compile "org.apache.hadoop:hadoop-auth:$hadoopVersion"
-    compile "org.apache.hadoop:hadoop-annotations:$hadoopVersion"
-    compile "org.apache.hadoop:hadoop-common:$hadoopVersion"
-    compile "org.apache.hadoop:hadoop-hdfs:$hadoopVersion"
-    compile('com.google.inject:guice:4.1.0')
-    compile('com.google.guava:guava:21.0')
-    compile('commons-collections:commons-collections:3.2.2')
-    compile('org.apache.commons:commons-dbcp2:2.1.1')
-    compile('commons-dbutils:commons-dbutils:1.5')
-    compile('commons-fileupload:commons-fileupload:1.2.1')
-    compile('commons-io:commons-io:2.4')
-    compile('commons-lang:commons-lang:2.6')
-    compile('javax.mail:mail:1.4.5')
-    compile('joda-time:joda-time:2.0')
-    compile('log4j:log4j:1.2.16')
-    compile('mysql:mysql-connector-java:5.1.28')
-    compile('net.sf.jopt-simple:jopt-simple:4.3')
-    compile('org.apache.commons:commons-jexl:2.1.1')
-    compile('org.apache.commons:commons-math3:3.0')
-    compile('org.apache.httpcomponents:httpclient:4.5.2')
-    compile('org.apache.httpcomponents:httpcore:4.4.5')
-    compile('org.apache.velocity:velocity:1.7')
-    compile('org.codehaus.jackson:jackson-core-asl:1.9.5')
-    compile('org.codehaus.jackson:jackson-mapper-asl:1.9.5')
-    compile('org.mortbay.jetty:jetty:6.1.26')
-    compile('org.mortbay.jetty:jetty-util:6.1.26')
-    compile('org.quartz-scheduler:quartz:2.2.1')
-    compile('org.yaml:snakeyaml:1.18')
-    compile('io.dropwizard.metrics:metrics-core:3.1.0')
-    compile('io.dropwizard.metrics:metrics-jvm:3.1.0')
+    compile deps.hadoopAuth
+    compile deps.hadoopAnnotations
+    compile deps.hadoopCommon
+    compile deps.hadoopHdfs
+    compile deps.guava
+    compile deps.collections
+    compile deps.dbcp2
+    compile deps.dbutils
+    compile deps.fileupload
+    compile deps.io
+    compile deps.commonsLang
+    compile deps.mail
+    compile deps.jodaTime
+    compile deps.mysqlConnector
+    compile deps.jopt
+    compile deps.jexl
+    compile deps.math3
+    compile deps.httpclient
+    compile deps.httpcore
+    compile deps.velocity
+    compile deps.jacksonCoreAsl
+    compile deps.jacksonMapperAsl
+    compile deps.jetty
+    compile deps.jettyUtil
+    compile deps.quartz
+    compile deps.snakeyaml
+    compile deps.metricsCore
+    compile deps.metricsJvm
+
+    testRuntime deps.h2
 
     testCompile(project(':test').sourceSets.test.output)
 
-    testRuntime('com.h2database:h2:1.4.193')
-    testRuntime('org.slf4j:slf4j-log4j12:1.7.18')
 }
 
 tasks.withType(JavaCompile) {
diff --git a/azkaban-db/build.gradle b/azkaban-db/build.gradle
index 48d94c2..a809145 100644
--- a/azkaban-db/build.gradle
+++ b/azkaban-db/build.gradle
@@ -19,13 +19,10 @@ apply plugin: 'distribution'
 dependencies {
 
     // todo kunkun-tang: consolidate dependencies in azkaban-common and azkaban-db
-    compile('log4j:log4j:1.2.16')
-    compile('com.google.inject:guice:4.1.0')
+    compile deps.dbutils
+    compile deps.dbcp2
 
-    compile('commons-dbutils:commons-dbutils:1.5')
-    compile('org.apache.commons:commons-dbcp2:2.1.1')
-
-    testRuntime('com.h2database:h2:1.4.193')
+    testRuntime deps.h2
 }
 
 /**
diff --git a/azkaban-exec-server/build.gradle b/azkaban-exec-server/build.gradle
index fd9acb8..083e376 100644
--- a/azkaban-exec-server/build.gradle
+++ b/azkaban-exec-server/build.gradle
@@ -2,18 +2,18 @@ apply plugin: 'distribution'
 
 dependencies {
     compile(project(':azkaban-common'))
-    compile('org.apache.kafka:kafka-log4j-appender:0.10.0.0')
-    compile('com.googlecode.json-simple:json-simple:1.1.1') {
+
+    compile deps.kafkaLog4jAppender
+    compile(deps.jsonSimple) {
         exclude group: 'junit', module: 'junit'
     }
 
     runtime(project(':azkaban-hadoop-security-plugin'))
-    runtime('org.slf4j:slf4j-log4j12:1.7.18')
 
     testCompile(project(path: ':azkaban-common', configuration: 'testCompile'))
     testCompile(project(':azkaban-common').sourceSets.test.output)
 
-    testRuntime "com.h2database:h2:1.4.193"
+    testRuntime deps.h2
 }
 
 distributions {
diff --git a/azkaban-hadoop-security-plugin/build.gradle b/azkaban-hadoop-security-plugin/build.gradle
index 56f6483..477ed8f 100644
--- a/azkaban-hadoop-security-plugin/build.gradle
+++ b/azkaban-hadoop-security-plugin/build.gradle
@@ -3,10 +3,10 @@ apply plugin: 'distribution'
 dependencies {
     compile project(":azkaban-common")
 
-    compileOnly "org.apache.hadoop:hadoop-common:$hadoopVersion"
-    compileOnly "org.apache.hadoop:hadoop-mapreduce-client-common:$hadoopVersion"
-    compileOnly "org.apache.hadoop:hadoop-mapreduce-client-core:$hadoopVersion"
-    compileOnly "org.apache.hive:hive-metastore:$hiveVersion"
+    compileOnly deps.hadoopCommon
+    compileOnly deps.hadoopMRClientCommon
+    compileOnly deps.hadoopMRClientCore
+    compileOnly deps.hiveMetastore
 }
 
 /**
diff --git a/azkaban-solo-server/build.gradle b/azkaban-solo-server/build.gradle
index 3359bcf..0bda1bc 100644
--- a/azkaban-solo-server/build.gradle
+++ b/azkaban-solo-server/build.gradle
@@ -6,8 +6,7 @@ dependencies {
     compile(project(':azkaban-web-server'))
     compile(project(':azkaban-exec-server'))
 
-    runtime('org.slf4j:slf4j-log4j12:1.7.18')
-    runtime('com.h2database:h2:1.4.193')
+    runtime deps.h2
 }
 
 installDist.dependsOn ':azkaban-web-server:installDist'
diff --git a/azkaban-web-server/build.gradle b/azkaban-web-server/build.gradle
index ac9395d..67a4379 100644
--- a/azkaban-web-server/build.gradle
+++ b/azkaban-web-server/build.gradle
@@ -43,29 +43,26 @@ apply plugin: 'lesscss'
 apply plugin: 'dustjs'
 apply plugin: 'distribution'
 
-ext.pegasusVersion = '1.15.7'
-
 configurations {
   generateRestli
 }
 
 dependencies {
   compile(project(':azkaban-common'))
-  compile('com.linkedin.pegasus:restli-server:' + pegasusVersion)
-  compile('org.apache.velocity:velocity-tools:2.0')
 
-  runtime('org.slf4j:slf4j-log4j12:1.7.18')
+  compile deps.restliServer
+  compile deps.velocityTools
 
   testCompile(project(path: ':azkaban-common', configuration: 'testCompile'))
-  testCompile('commons-collections:commons-collections:3.2.2')
+  testCompile deps.collections
 
   //AZ web module tests need to access classes defined in azkaban-common test module
   testCompile project(':azkaban-common').sourceSets.test.output
 
-  generateRestli('com.linkedin.pegasus:generator:' + pegasusVersion)
-  generateRestli('com.linkedin.pegasus:restli-tools:' + pegasusVersion)
+  generateRestli deps.restliGenerator
+  generateRestli deps.restliTools
 
-  testRuntime "com.h2database:h2:1.4.193"
+  testRuntime deps.h2
 }
 
 sourceSets {

build.gradle 70(+67 -3)

diff --git a/build.gradle b/build.gradle
index edf35d2..435e957 100644
--- a/build.gradle
+++ b/build.gradle
@@ -21,6 +21,62 @@ allprojects {
     }
 }
 
+ext.versions = [
+        hadoop: '2.6.1',
+        hive  : '1.1.0',
+        restli: '1.15.7',
+        slf4j : '1.7.18',
+]
+
+ext.deps = [
+        // External dependencies
+        assertj             : 'org.assertj:assertj-core:3.8.0',
+        collections         : 'commons-collections:commons-collections:3.2.2',
+        commonsLang         : 'commons-lang:commons-lang:2.6',
+        dbcp2               : 'org.apache.commons:commons-dbcp2:2.1.1',
+        dbutils             : 'commons-dbutils:commons-dbutils:1.5',
+        fileupload          : 'commons-fileupload:commons-fileupload:1.2.1',
+        guava               : 'com.google.guava:guava:21.0',
+        guice               : 'com.google.inject:guice:4.1.0',
+        h2                  : 'com.h2database:h2:1.4.193',
+        hadoopAnnotations   : "org.apache.hadoop:hadoop-annotations:" + versions.hadoop,
+        hadoopAuth          : "org.apache.hadoop:hadoop-auth:" + versions.hadoop,
+        hadoopCommon        : "org.apache.hadoop:hadoop-common:" + versions.hadoop,
+        hadoopHdfs          : "org.apache.hadoop:hadoop-hdfs:" + versions.hadoop,
+        hadoopMRClientCommon: "org.apache.hadoop:hadoop-mapreduce-client-common:" + versions.hadoop,
+        hadoopMRClientCore  : "org.apache.hadoop:hadoop-mapreduce-client-core:" + versions.hadoop,
+        hiveMetastore       : "org.apache.hive:hive-metastore:" + versions.hive,
+        httpclient          : 'org.apache.httpcomponents:httpclient:4.5.2',
+        httpcore            : 'org.apache.httpcomponents:httpcore:4.4.5',
+        io                  : 'commons-io:commons-io:2.4',
+        jacksonCoreAsl      : 'org.codehaus.jackson:jackson-core-asl:1.9.5',
+        jacksonMapperAsl    : 'org.codehaus.jackson:jackson-mapper-asl:1.9.5',
+        jetty               : 'org.mortbay.jetty:jetty:6.1.26',
+        jettyUtil           : 'org.mortbay.jetty:jetty-util:6.1.26',
+        jexl                : 'org.apache.commons:commons-jexl:2.1.1',
+        jodaTime            : 'joda-time:joda-time:2.0',
+        jopt                : 'net.sf.jopt-simple:jopt-simple:4.3',
+        jsonSimple          : 'com.googlecode.json-simple:json-simple:1.1.1',
+        junit               : 'junit:junit:4.12',
+        kafkaLog4jAppender  : 'org.apache.kafka:kafka-log4j-appender:0.10.0.0',
+        log4j               : 'log4j:log4j:1.2.16',
+        mail                : 'javax.mail:mail:1.4.5',
+        math3               : 'org.apache.commons:commons-math3:3.0',
+        metricsCore         : 'io.dropwizard.metrics:metrics-core:3.1.0',
+        metricsJvm          : 'io.dropwizard.metrics:metrics-jvm:3.1.0',
+        mockito             : 'org.mockito:mockito-all:1.10.19',
+        mysqlConnector      : 'mysql:mysql-connector-java:5.1.28',
+        quartz              : 'org.quartz-scheduler:quartz:2.2.1',
+        restliGenerator     : 'com.linkedin.pegasus:generator:' + versions.restli,
+        restliServer        : 'com.linkedin.pegasus:restli-server:' + versions.restli,
+        restliTools         : 'com.linkedin.pegasus:restli-tools:' + versions.restli,
+        slf4j               : 'org.slf4j:slf4j-api:' + versions.slf4j,
+        slf4jLog4j          : 'org.slf4j:slf4j-log4j12:' + versions.slf4j,
+        snakeyaml           : 'org.yaml:snakeyaml:1.18',
+        velocity            : 'org.apache.velocity:velocity:1.7',
+        velocityTools       : 'org.apache.velocity:velocity-tools:2.0',
+]
+
 subprojects {
     apply plugin: 'java'
     apply plugin: 'idea'
@@ -55,9 +111,17 @@ subprojects {
         }
 
         dependencies {
-            testCompile('junit:junit:4.12')
-            testCompile('org.assertj:assertj-core:3.8.0')
-            testCompile('org.mockito:mockito-all:1.10.19')
+            compile deps.log4j
+            compile deps.guice
+            compile deps.slf4j
+
+            runtime deps.slf4jLog4j
+
+            testCompile deps.assertj
+            testCompile deps.junit
+            testCompile deps.mockito
+
+
         }
     }
 
diff --git a/gradle.properties b/gradle.properties
index fae1156..0b117cb 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -15,8 +15,3 @@ org.gradle.configureondemand=true
 org.gradle.parallel=true
 #Allows generation of idea/eclipse metadata for a specific subproject and its upstream project dependencies
 ide.recursive=true
-#---------------------------------
-# Versions
-#---------------------------------
-hadoopVersion=2.6.1
-hiveVersion=1.1.0