azkaban-aplcache

Build versioning and refactor of build scripts (#694) * Build

7/29/2016 1:16:31 PM
3.1.0

Details

.gitignore 9(+7 -2)

diff --git a/.gitignore b/.gitignore
index 137c932..771b0fd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,16 @@
-*.iml
+
 *.log
 *.swp
 .classpath
 .gradle/
-.idea/
 .project
 .settings/
 /bin
 bin/
 build/
+
+# Intellij files
+.idea
+*.iml
+*.ipr
+*.iws
diff --git a/azkaban-common/build.gradle b/azkaban-common/build.gradle
new file mode 100644
index 0000000..6a24945
--- /dev/null
+++ b/azkaban-common/build.gradle
@@ -0,0 +1,64 @@
+configurations {
+  all {
+    transitive = false
+  }
+  errorprone {
+    transitive = true
+  }
+}
+
+apply plugin: 'c'
+model {
+  components {
+    main(NativeExecutableSpec) {
+      sources {
+        c {
+          source {
+            srcDir "src/main"
+            include "**/*.c"
+          }
+        }
+      }
+    }
+  }
+}
+
+dependencies {
+  compile('com.google.guava:guava:13.0.1')
+  compile('com.h2database:h2:1.3.170')
+  compile('commons-codec:commons-codec:1.9')
+  compile('commons-collections:commons-collections:3.2.2')
+  compile('commons-configuration:commons-configuration:1.8')
+  compile('commons-dbcp:commons-dbcp:1.4')
+  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('commons-logging:commons-logging:1.1.1')
+  compile('commons-pool:commons-pool:1.6')
+  compile('javax.mail:mail:1.4.5')
+  compile('javax.servlet:servlet-api:2.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-email:1.2')
+  compile('org.apache.commons:commons-jexl:2.1.1')
+  compile('org.apache.commons:commons-math3:3.0')
+  compile('org.apache.httpcomponents:httpclient:4.3.1')
+  compile('org.apache.httpcomponents:httpcore:4.3')
+  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.slf4j:slf4j-api:1.6.1')
+
+  testCompile(project(':azkaban-test').sourceSets.test.output)
+  testCompile('junit:junit:4.11')
+  testCompile('org.hamcrest:hamcrest-all:1.3')
+}
+
+tasks.withType(JavaCompile) {
+  options.encoding = "UTF-8"
+}
diff --git a/azkaban-execserver/build.gradle b/azkaban-execserver/build.gradle
new file mode 100644
index 0000000..0d02240
--- /dev/null
+++ b/azkaban-execserver/build.gradle
@@ -0,0 +1,56 @@
+configurations {
+  all {
+    transitive = false
+  }
+  errorprone {
+    transitive = true
+  }
+}
+
+dependencies {
+  compile(project(':azkaban-common'))
+  compile('commons-io:commons-io:2.4')
+  compile('javax.servlet:servlet-api:2.5')
+  compile('joda-time:joda-time:2.0')
+  compile('log4j:log4j:1.2.16')
+  compile('commons-logging:commons-logging:1.1.1')
+  compile('org.apache.httpcomponents:httpclient:4.3.1')
+  compile('org.apache.httpcomponents:httpcore:4.3')
+  compile('org.mortbay.jetty:jetty:6.1.26')
+  compile('org.mortbay.jetty:jetty-util:6.1.26')
+  compile('org.codehaus.jackson:jackson-core-asl:1.9.5')
+  compile('org.codehaus.jackson:jackson-mapper-asl:1.9.5')
+
+  testCompile('junit:junit:4.11')
+  testCompile('org.hamcrest:hamcrest-all:1.3')
+  testCompile(project(':azkaban-common').sourceSets.test.output)
+}
+
+task createDirs() << {
+  file('build/package/extlib').mkdirs()
+  file('build/package/plugins').mkdirs()
+}
+
+task copyDeps(type: Copy, dependsOn: 'build') {
+  from(project(':azkaban-common').configurations.compile)
+  from(configurations.compile)
+  into('build/package/lib')
+}
+
+task copyLibs(type: Copy, dependsOn: 'build') {
+  from('build/libs')
+  into('build/package/lib')
+}
+
+task copyPackage(type: Copy) {
+  from('src/package')
+  into('build/package')
+}
+
+task copy(dependsOn: [
+        'createVersionFile',
+        'createDirs',
+        'copyDeps',
+        'copyLibs',
+        'copyPackage']) {
+}
diff --git a/azkaban-migration/build.gradle b/azkaban-migration/build.gradle
new file mode 100644
index 0000000..743c1fc
--- /dev/null
+++ b/azkaban-migration/build.gradle
@@ -0,0 +1,40 @@
+configurations {
+  all {
+    transitive = false
+  }
+  errorprone {
+    transitive = true
+  }
+}
+
+dependencies {
+  compile(project(':azkaban-common'))
+  compile('commons-io:commons-io:2.4')
+  compile('commons-dbcp:commons-dbcp:1.4')
+  compile('commons-dbutils:commons-dbutils:1.5')
+  compile('joda-time:joda-time:2.0')
+  compile('log4j:log4j:1.2.16')
+}
+
+task copyLibs(type: Copy, dependsOn: 'build') {
+  from('build/libs')
+  into('build/package/lib')
+}
+
+task copyDeps(type: Copy, dependsOn: 'build') {
+  from(project(':azkaban-common').configurations.compile)
+  from(configurations.compile)
+  into('build/package/lib')
+}
+
+task copyPackage(type: Copy) {
+  from('src/package')
+  into('build/package')
+}
+
+task copy(dependsOn: [
+        'createVersionFile',
+        'copyLibs',
+        'copyDeps',
+        'copyPackage']) {
+}
diff --git a/azkaban-soloserver/build.gradle b/azkaban-soloserver/build.gradle
new file mode 100644
index 0000000..fbfdc3a
--- /dev/null
+++ b/azkaban-soloserver/build.gradle
@@ -0,0 +1,45 @@
+dependencies {
+  compile(project(':azkaban-common'))
+  compile(project(':azkaban-webserver'))
+  compile(project(':azkaban-execserver'))
+}
+
+task createDirs() << {
+  file('build/package/extlib').mkdirs()
+  file('build/package/plugins').mkdirs()
+}
+
+task copyDeps(type: Copy, dependsOn: 'build') {
+  from(configurations.compile)
+  into('build/package/lib')
+}
+
+task copyLibs(type: Copy, dependsOn: 'build') {
+  from('build/libs')
+  into('build/package/lib')
+}
+
+task copyPackage(type: Copy) {
+  from('src/package')
+  into('build/package')
+}
+
+task copyWeb(type: Copy, dependsOn: ':azkaban-webserver:copy') {
+  from(project(':azkaban-webserver').files('build/package/web'))
+  into('build/package/web')
+}
+
+task copySql(type: Copy) {
+  from(project(':azkaban-sql').files('src/sql'))
+  into('build/package/sql')
+}
+
+task copy(dependsOn: [
+        'createVersionFile',
+        'createDirs',
+        'copyDeps',
+        'copyLibs',
+        'copyPackage',
+        'copyWeb',
+        'copySql']) {
+}
diff --git a/azkaban-sql/build.gradle b/azkaban-sql/build.gradle
new file mode 100644
index 0000000..04039b5
--- /dev/null
+++ b/azkaban-sql/build.gradle
@@ -0,0 +1,10 @@
+task concat() << {
+  ext.destFile = 'build/sql/create-all-sql-' + version + '.sql';
+  ant.concat(destfile: destFile, fixlastline: 'yes') {
+    logger.info('Concating create scripts to ' + destFile)
+    fileset(dir: 'src/sql') {
+      exclude(name: 'update.*.sql')
+      exclude(name: 'database.properties')
+    }
+  }
+}
diff --git a/azkaban-test/build.gradle b/azkaban-test/build.gradle
new file mode 100644
index 0000000..24aeb40
--- /dev/null
+++ b/azkaban-test/build.gradle
@@ -0,0 +1,78 @@
+apply plugin: 'distribution'
+
+dependencies {
+  testCompile('junit:junit:4.11')
+}
+
+distributions {
+  animal {
+    baseName = 'test-animal'
+    contents {
+      from { 'src/test/resources/executions/animal' }
+    }
+  }
+
+  embedded {
+    baseName = 'test-embedded'
+    contents {
+      from { 'src/test/resources/executions/embedded' }
+    }
+  }
+
+  embedded2 {
+    baseName = 'test-embedded2'
+    contents {
+      from { 'src/test/resources/executions/embedded2' }
+    }
+  }
+
+  embedded3 {
+    baseName = 'test-embedded3'
+    contents {
+      from { 'src/test/resources/executions/embedded3' }
+    }
+  }
+
+  embeddedBad {
+    baseName = 'test-embedded-bad'
+    contents {
+      from { 'src/test/resources/executions/embeddedBad' }
+    }
+  }
+
+  execpropstest {
+    baseName = 'test-execpropstest'
+    contents {
+      from { 'src/test/resources/executions/execpropstest' }
+    }
+  }
+
+  exectest1 {
+    baseName = 'test-exectest1'
+    contents {
+      from { 'src/test/resources/executions/exectest1' }
+    }
+  }
+
+  exectest2 {
+    baseName = 'test-exectest2'
+    contents {
+      from { 'src/test/resources/executions/exectest2' }
+    }
+  }
+
+  logtest {
+    baseName = 'test-logtest'
+    contents {
+      from { 'src/test/resources/executions/logtest' }
+    }
+  }
+}
+
+distZip.dependsOn animalDistZip, embeddedDistZip, embedded2DistZip,
+        embedded3DistZip, embeddedBadDistZip, execpropstestDistZip,
+        exectest1DistZip, exectest2DistZip, logtestDistZip
+
+distTar.dependsOn animalDistTar, embeddedDistTar, embedded2DistTar,
+        embedded3DistTar, embeddedBadDistTar, execpropstestDistTar,
+        exectest1DistTar, exectest2DistTar, logtestDistTar
diff --git a/azkaban-webserver/build.gradle b/azkaban-webserver/build.gradle
new file mode 100644
index 0000000..3b984fc
--- /dev/null
+++ b/azkaban-webserver/build.gradle
@@ -0,0 +1,141 @@
+apply plugin: 'lesscss'
+apply plugin: 'dustjs'
+
+ext.pegasusVersion = '1.15.7'
+
+configurations {
+  all {
+    transitive = false
+  }
+  generateRestli {
+    transitive = true
+  }
+  errorprone {
+    transitive = true
+  }
+}
+
+dependencies {
+  compile(project(':azkaban-common'))
+  compile('com.linkedin.parseq:parseq:1.3.7')
+  compile('com.linkedin.pegasus:data:' + pegasusVersion)
+  compile('com.linkedin.pegasus:gradle-plugins:' + pegasusVersion)
+  compile('com.linkedin.pegasus:li-jersey-uri:' + pegasusVersion)
+  compile('com.linkedin.pegasus:pegasus-common:' + pegasusVersion)
+  compile('com.linkedin.pegasus:restli-common:' + pegasusVersion)
+  compile('com.linkedin.pegasus:restli-server:' + pegasusVersion)
+  compile('com.linkedin.pegasus:r2:' + pegasusVersion)
+  compile('com.fasterxml.jackson.core:jackson-core:2.3.2')
+  compile('commons-lang:commons-lang:2.6')
+  compile('commons-io:commons-io:2.4')
+  compile('commons-fileupload:commons-fileupload:1.2.1')
+  compile('javax.servlet:servlet-api:2.5')
+  compile('joda-time:joda-time:2.0')
+  compile('log4j:log4j:1.2.16')
+  compile('net.sf.jopt-simple:jopt-simple:4.3')
+  compile('org.apache.velocity:velocity:1.7')
+  compile('org.apache.velocity:velocity-tools:2.0')
+  compile('org.mortbay.jetty:jetty:6.1.26')
+  compile('org.mortbay.jetty:jetty-util:6.1.26')
+
+  testCompile('commons-collections:commons-collections:3.2.2')
+  testCompile('junit:junit:4.11')
+  testCompile('org.hamcrest:hamcrest-all:1.3')
+  testCompile('org.mockito:mockito-all:1.10.19')
+
+  generateRestli('com.linkedin.pegasus:generator:' + pegasusVersion)
+  generateRestli('com.linkedin.pegasus:restli-tools:' + pegasusVersion)
+
+  // Needed by Velocity at runtime
+  testRuntime('commons-collections:commons-collections:3.2.2')
+  testCompile('junit:junit:4.11')
+  testCompile('org.hamcrest:hamcrest-all:1.3')
+}
+
+sourceSets {
+  main {
+    java {
+      srcDirs 'src/main/java', 'src/restli/generatedJava', 'src/restli/java'
+    }
+  }
+}
+
+task restliTemplateGenerator(type: JavaExec) {
+  mkdir 'src/restli/generatedJava'
+
+  main = 'com.linkedin.pegasus.generator.PegasusDataTemplateGenerator'
+  args = ['src/restli/generatedJava','src/restli/schemas']
+  classpath = configurations.generateRestli
+}
+
+task restliRestSpecGenerator(dependsOn: [restliTemplateGenerator], type: JavaExec) << {
+  mkdir 'src/restli/generatedRestSpec'
+
+  main = 'com.linkedin.restli.tools.idlgen.RestLiResourceModelExporterCmdLineApp'
+  args = ['-outdir', 'src/restli/generatedRestSpec', '-sourcepath', 'src/restli/java']
+  classpath = configurations.generateRestli
+}
+
+task restli(dependsOn: restliTemplateGenerator) << {
+}
+
+compileJava.dependsOn.add('restli')
+
+lesscss {
+  source = fileTree('src/main/less') {
+    include 'azkaban.less'
+    include 'azkaban-graph.less'
+  }
+  dest = 'build/less'
+}
+
+dustjs {
+  source = fileTree('src/main/tl')
+  dest = 'build/dust'
+}
+
+task createDirs() << {
+  file('build/package/extlib').mkdirs()
+  file('build/package/plugins').mkdirs()
+}
+
+task copyWeb(type: Copy) {
+  from('src/web')
+  into('build/package/web')
+}
+
+task copyLess(type: Copy, dependsOn: ['lesscss', 'copyWeb']) {
+  from('build/less')
+  into('build/package/web/css')
+}
+
+task copyDust(type: Copy, dependsOn: ['dustjs', 'copyWeb']) {
+  from('build/dust')
+  into('build/package/web/js')
+}
+
+task copyDeps(type: Copy, dependsOn: 'build') {
+  from(project(':azkaban-common').configurations.compile)
+  from(configurations.compile)
+  into('build/package/lib')
+}
+
+task copyLibs(type: Copy, dependsOn: 'build') {
+  from('build/libs')
+  into('build/package/lib')
+}
+
+task copyPackage(type: Copy) {
+  from('src/package')
+  into('build/package')
+}
+
+task copy(dependsOn: [
+        'createVersionFile',
+        'createDirs',
+        'copyLess',
+        'copyDust',
+        'copyDeps',
+        'copyLibs',
+        'copyPackage']) {
+}

build.gradle 463(+7 -456)

diff --git a/build.gradle b/build.gradle
index d473a72..d798528 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,12 +6,15 @@ buildscript {
     }
   }
   dependencies {
+    classpath 'com.cinnober.gradle:semver-git:2.2.1'
     classpath 'com.linkedin:gradle-dustjs-plugin:1.0.0'
     classpath 'de.obqo.gradle:gradle-lesscss-plugin:1.0-1.3.3'
     classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.8'
   }
 }
 
+apply plugin: 'com.cinnober.gradle.semver-git'
+apply plugin: 'idea'
 apply plugin: 'distribution'
 
 allprojects {
@@ -35,9 +38,13 @@ def cmdCaller = { commandln ->
 
 subprojects {
   apply plugin: 'java'
+  apply plugin: 'idea'
   apply plugin: 'eclipse'
   apply plugin: 'net.ltgt.errorprone'
 
+  // Set the same version for all sub-projects to root project version
+  version = rootProject.version
+
   configurations.errorprone {
     resolutionStrategy.force 'com.google.errorprone:error_prone_core:2.0.5'
   }
@@ -82,462 +89,6 @@ subprojects {
   }
 }
 
-project(':azkaban-common') {
-  configurations {
-    all {
-      transitive = false
-    }
-    errorprone {
-      transitive = true
-    }
-  }
-
-  apply plugin: 'c'
-  model {
-    components {
-      main(NativeExecutableSpec) {
-        sources {
-          c {
-            source {
-              srcDir "src/main"
-              include "**/*.c"
-            }
-          }
-        }
-      }
-    }
-  }
-
-  dependencies {
-    compile('com.google.guava:guava:13.0.1')
-    compile('com.h2database:h2:1.3.170')
-    compile('commons-codec:commons-codec:1.9')
-    compile('commons-collections:commons-collections:3.2.2')
-    compile('commons-configuration:commons-configuration:1.8')
-    compile('commons-dbcp:commons-dbcp:1.4')
-    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('commons-logging:commons-logging:1.1.1')
-    compile('commons-pool:commons-pool:1.6')
-    compile('javax.mail:mail:1.4.5')
-    compile('javax.servlet:servlet-api:2.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-email:1.2')
-    compile('org.apache.commons:commons-jexl:2.1.1')
-    compile('org.apache.commons:commons-math3:3.0')
-    compile('org.apache.httpcomponents:httpclient:4.3.1')
-    compile('org.apache.httpcomponents:httpcore:4.3')
-    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.slf4j:slf4j-api:1.6.1')
-
-    testCompile(project(':azkaban-test').sourceSets.test.output)
-    testCompile('junit:junit:4.11')
-    testCompile('org.hamcrest:hamcrest-all:1.3')
-  }
-
-  tasks.withType(JavaCompile) {
-    options.encoding = "UTF-8"
-  }
-
-}
-
-project(':azkaban-migration') {
-  configurations {
-    all {
-      transitive = false
-    }
-    errorprone {
-      transitive = true
-    }
-  }
-
-  dependencies {
-    compile(project(':azkaban-common'))
-    compile('commons-io:commons-io:2.4')
-    compile('commons-dbcp:commons-dbcp:1.4')
-    compile('commons-dbutils:commons-dbutils:1.5')
-    compile('joda-time:joda-time:2.0')
-    compile('log4j:log4j:1.2.16')
-  }
-
-  task copyLibs(type: Copy, dependsOn: 'build') {
-    from('build/libs')
-    into('build/package/lib')
-  }
-
-  task copyDeps(type: Copy, dependsOn: 'build') {
-    from(project(':azkaban-common').configurations.compile)
-    from(configurations.compile)
-    into('build/package/lib')
-  }
-
-  task copyPackage(type: Copy) {
-    from('src/package')
-    into('build/package')
-  }
-
-  task copy(dependsOn: [
-      'createVersionFile',
-      'copyLibs',
-      'copyDeps',
-      'copyPackage']) {
-  }
-}
-
-project(':azkaban-webserver') {
-  apply plugin: 'lesscss'
-  apply plugin: 'dustjs'
-
-  ext.pegasusVersion = '1.15.7'
-
-  configurations {
-    all {
-      transitive = false
-    }
-    generateRestli {
-      transitive = true
-    }
-    errorprone {
-      transitive = true
-    }
-  }
-
-  dependencies {
-    compile(project(':azkaban-common'))
-    compile('com.linkedin.parseq:parseq:1.3.7')
-    compile('com.linkedin.pegasus:data:' + pegasusVersion)
-    compile('com.linkedin.pegasus:gradle-plugins:' + pegasusVersion)
-    compile('com.linkedin.pegasus:li-jersey-uri:' + pegasusVersion)
-    compile('com.linkedin.pegasus:pegasus-common:' + pegasusVersion)
-    compile('com.linkedin.pegasus:restli-common:' + pegasusVersion)
-    compile('com.linkedin.pegasus:restli-server:' + pegasusVersion)
-    compile('com.linkedin.pegasus:r2:' + pegasusVersion)
-    compile('com.fasterxml.jackson.core:jackson-core:2.3.2')
-    compile('commons-lang:commons-lang:2.6')
-    compile('commons-io:commons-io:2.4')
-    compile('commons-fileupload:commons-fileupload:1.2.1')
-    compile('javax.servlet:servlet-api:2.5')
-    compile('joda-time:joda-time:2.0')
-    compile('log4j:log4j:1.2.16')
-    compile('net.sf.jopt-simple:jopt-simple:4.3')
-    compile('org.apache.velocity:velocity:1.7')
-    compile('org.apache.velocity:velocity-tools:2.0')
-    compile('org.mortbay.jetty:jetty:6.1.26')
-    compile('org.mortbay.jetty:jetty-util:6.1.26')
-
-    testCompile('commons-collections:commons-collections:3.2.2')
-    testCompile('junit:junit:4.11')
-    testCompile('org.hamcrest:hamcrest-all:1.3')
-    testCompile('org.mockito:mockito-all:1.10.19')
-
-    generateRestli('com.linkedin.pegasus:generator:' + pegasusVersion)
-    generateRestli('com.linkedin.pegasus:restli-tools:' + pegasusVersion)
-
-    // Needed by Velocity at runtime
-    testRuntime('commons-collections:commons-collections:3.2.2')
-    testCompile('junit:junit:4.11')
-    testCompile('org.hamcrest:hamcrest-all:1.3')
-  }
-
-  sourceSets {
-    main {
-      java {
-        srcDirs 'src/main/java', 'src/restli/generatedJava', 'src/restli/java'
-      }
-    }
-  }
-
-  task restliTemplateGenerator(type: JavaExec) {
-    mkdir 'src/restli/generatedJava'
-
-    main = 'com.linkedin.pegasus.generator.PegasusDataTemplateGenerator'
-    args = ['src/restli/generatedJava','src/restli/schemas']
-    classpath = configurations.generateRestli
-  }
-
-  task restliRestSpecGenerator(dependsOn: [restliTemplateGenerator], type: JavaExec) << {
-    mkdir 'src/restli/generatedRestSpec'
-
-    main = 'com.linkedin.restli.tools.idlgen.RestLiResourceModelExporterCmdLineApp'
-    args = ['-outdir', 'src/restli/generatedRestSpec', '-sourcepath', 'src/restli/java']
-    classpath = configurations.generateRestli
-  }
-
-  task restli(dependsOn: restliTemplateGenerator) << {
-  }
-
-  compileJava.dependsOn.add('restli')
-
-  lesscss {
-    source = fileTree('src/main/less') {
-      include 'azkaban.less'
-      include 'azkaban-graph.less'
-    }
-    dest = 'build/less'
-  }
-
-  dustjs {
-    source = fileTree('src/main/tl')
-    dest = 'build/dust'
-  }
-
-  task createDirs() << {
-    file('build/package/extlib').mkdirs()
-    file('build/package/plugins').mkdirs()
-  }
-
-  task copyWeb(type: Copy) {
-    from('src/web')
-    into('build/package/web')
-  }
-
-  task copyLess(type: Copy, dependsOn: ['lesscss', 'copyWeb']) {
-    from('build/less')
-    into('build/package/web/css')
-  }
-
-  task copyDust(type: Copy, dependsOn: ['dustjs', 'copyWeb']) {
-    from('build/dust')
-    into('build/package/web/js')
-  }
-
-  task copyDeps(type: Copy, dependsOn: 'build') {
-    from(project(':azkaban-common').configurations.compile)
-    from(configurations.compile)
-    into('build/package/lib')
-  }
-
-  task copyLibs(type: Copy, dependsOn: 'build') {
-    from('build/libs')
-    into('build/package/lib')
-  }
-
-  task copyPackage(type: Copy) {
-    from('src/package')
-    into('build/package')
-  }
-
-  task copy(dependsOn: [
-      'createVersionFile',
-      'createDirs',
-      'copyLess',
-      'copyDust',
-      'copyDeps',
-      'copyLibs',
-      'copyPackage']) {
-  }
-}
-
-project(':azkaban-execserver') {
-  configurations {
-    all {
-      transitive = false
-    }
-    errorprone {
-      transitive = true
-    }
-  }
-
-  dependencies {
-    compile(project(':azkaban-common'))
-    compile('commons-io:commons-io:2.4')
-    compile('javax.servlet:servlet-api:2.5')
-    compile('joda-time:joda-time:2.0')
-    compile('log4j:log4j:1.2.16')
-    compile('commons-logging:commons-logging:1.1.1')
-    compile('org.apache.httpcomponents:httpclient:4.3.1')
-    compile('org.apache.httpcomponents:httpcore:4.3')
-    compile('org.mortbay.jetty:jetty:6.1.26')
-    compile('org.mortbay.jetty:jetty-util:6.1.26')
-    compile('org.codehaus.jackson:jackson-core-asl:1.9.5')
-    compile('org.codehaus.jackson:jackson-mapper-asl:1.9.5')
-
-    testCompile('junit:junit:4.11')
-    testCompile('org.hamcrest:hamcrest-all:1.3')
-    testCompile(project(':azkaban-common').sourceSets.test.output)
-  }
-
-  task createDirs() << {
-    file('build/package/extlib').mkdirs()
-    file('build/package/plugins').mkdirs()
-  }
-
-  task copyDeps(type: Copy, dependsOn: 'build') {
-    from(project(':azkaban-common').configurations.compile)
-    from(configurations.compile)
-    into('build/package/lib')
-  }
-
-  task copyLibs(type: Copy, dependsOn: 'build') {
-    from('build/libs')
-    into('build/package/lib')
-  }
-
-  task copyPackage(type: Copy) {
-    from('src/package')
-    into('build/package')
-  }
-
-  task copy(dependsOn: [
-      'createVersionFile',
-      'createDirs',
-      'copyDeps',
-      'copyLibs',
-      'copyPackage']) {
-  }
-}
-
-project(':azkaban-soloserver') {
-  dependencies {
-    compile(project(':azkaban-common'))
-    compile(project(':azkaban-webserver'))
-    compile(project(':azkaban-execserver'))
-  }
-
-  task createDirs() << {
-    file('build/package/extlib').mkdirs()
-    file('build/package/plugins').mkdirs()
-  }
-
-  task copyDeps(type: Copy, dependsOn: 'build') {
-    from(configurations.compile)
-    into('build/package/lib')
-  }
-
-  task copyLibs(type: Copy, dependsOn: 'build') {
-    from('build/libs')
-    into('build/package/lib')
-  }
-
-  task copyPackage(type: Copy) {
-    from('src/package')
-    into('build/package')
-  }
-
-  task copyWeb(type: Copy, dependsOn: ':azkaban-webserver:copy') {
-    from(project(':azkaban-webserver').files('build/package/web'))
-    into('build/package/web')
-  }
-
-  task copySql(type: Copy) {
-    from(project(':azkaban-sql').files('src/sql'))
-    into('build/package/sql')
-  }
-
-  task copy(dependsOn: [
-      'createVersionFile',
-      'createDirs',
-      'copyDeps',
-      'copyLibs',
-      'copyPackage',
-      'copyWeb',
-      'copySql']) {
-  }
-}
-
-project(':azkaban-sql') {
-  task concat() << {
-    ext.destFile = 'build/sql/create-all-sql-' + version + '.sql';
-    ant.concat(destfile: destFile, fixlastline: 'yes') {
-      logger.info('Concating create scripts to ' + destFile)
-      fileset(dir: 'src/sql') {
-        exclude(name: 'update.*.sql')
-        exclude(name: 'database.properties')
-      }
-    }
-  }
-}
-
-project(':azkaban-test') {
-  apply plugin: 'distribution'
-
-  dependencies {
-    testCompile('junit:junit:4.11')
-  }
-
-  distributions {
-    animal {
-      baseName = 'test-animal'
-      contents {
-        from { 'src/test/resources/executions/animal' }
-      }
-    }
-
-    embedded {
-      baseName = 'test-embedded'
-      contents {
-        from { 'src/test/resources/executions/embedded' }
-      }
-    }
-
-    embedded2 {
-      baseName = 'test-embedded2'
-      contents {
-        from { 'src/test/resources/executions/embedded2' }
-      }
-    }
-
-    embedded3 {
-      baseName = 'test-embedded3'
-      contents {
-        from { 'src/test/resources/executions/embedded3' }
-      }
-    }
-
-    embeddedBad {
-      baseName = 'test-embedded-bad'
-      contents {
-        from { 'src/test/resources/executions/embeddedBad' }
-      }
-    }
-
-    execpropstest {
-      baseName = 'test-execpropstest'
-      contents {
-        from { 'src/test/resources/executions/execpropstest' }
-      }
-    }
-
-    exectest1 {
-      baseName = 'test-exectest1'
-      contents {
-        from { 'src/test/resources/executions/exectest1' }
-      }
-    }
-
-    exectest2 {
-      baseName = 'test-exectest2'
-      contents {
-        from { 'src/test/resources/executions/exectest2' }
-      }
-    }
-
-    logtest {
-      baseName = 'test-logtest'
-      contents {
-        from { 'src/test/resources/executions/logtest' }
-      }
-    }
-  }
-
-  distZip.dependsOn animalDistZip, embeddedDistZip, embedded2DistZip,
-      embedded3DistZip, embeddedBadDistZip, execpropstestDistZip,
-      exectest1DistZip, exectest2DistZip, logtestDistZip
-
-  distTar.dependsOn animalDistTar, embeddedDistTar, embedded2DistTar,
-      embedded3DistTar, embeddedBadDistTar, execpropstestDistTar,
-      exectest1DistTar, exectest2DistTar, logtestDistTar
-}
-
 distributions {
   migration {
     baseName = 'azkaban-migration'

gradle.properties 23(+21 -2)

diff --git a/gradle.properties b/gradle.properties
index a9b4824..ed84481 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,3 +1,22 @@
-org.gradle.daemon=true
 group=com.linkedin
-version=3.0.0
+
+# optionally: ext.nextVersion = "major", "minor" (default), "patch" or e.g. "3.0.0-rc2"
+# optionally: ext.snapshotSuffix = "SNAPSHOT" (default) or a pattern, e.g. "<count>.g<sha>-SNAPSHOT"
+#
+# Eg: artifacts will be created in the format azkaban-web-server-2.7.0-474-gbc0be80.tar.gz
+snapshotSuffix=<count>-g<sha>
+
+#long-running Gradle process speeds up local builds
+#to stop the daemon run 'ligradle --stop'
+org.gradle.daemon=true
+
+#configures only relevant projects to speed up the configuration of large projects
+#useful when specific project/task is invoked e.g: ligradle :cloud:cloud-api:build
+org.gradle.configureondemand=true
+
+#Gradle will run tasks from subprojects in parallel
+#Higher CPU usage, faster builds
+org.gradle.parallel=true
+
+#Allows generation of idea/eclipse metadata for a specific subproject and its upstream project dependencies
+ide.recursive=true