azkaban-aplcache

Merge pull request #156 from davidzchen/build-ivy Resolve

2/10/2014 7:06:06 PM

Changes

.gitignore 1(+1 -0)

build.xml 801(+435 -366)

ivy.xml 71(+71 -0)

ivy/.gitignore 1(+1 -0)

ivy/ivysettings.xml 27(+27 -0)

lib/commons-collections-3.2.1.jar 0(+0 -0)

lib/commons-configuration-1.8.jar 0(+0 -0)

lib/commons-dbcp-1.4.jar 0(+0 -0)

lib/commons-dbutils-1.5.jar 0(+0 -0)

lib/commons-email-1.2.jar 0(+0 -0)

lib/commons-fileupload-1.2.1.jar 0(+0 -0)

lib/commons-io-2.4.jar 0(+0 -0)

lib/commons-jexl-2.1.1.jar 0(+0 -0)

lib/commons-lang-2.6.jar 0(+0 -0)

lib/commons-logging-1.1.1.jar 0(+0 -0)

lib/commons-pool-1.6.jar 0(+0 -0)

lib/guava-13.0.1.jar 0(+0 -0)

lib/h2-1.3.170.jar 0(+0 -0)

lib/httpclient-4.2.1.jar 0(+0 -0)

lib/httpcore-4.2.1.jar 0(+0 -0)

lib/jackson-core-asl-1.9.5.jar 0(+0 -0)

lib/jackson-mapper-asl-1.9.5.jar 0(+0 -0)

lib/jetty-6.1.26.jar 0(+0 -0)

lib/jetty-util-6.1.26.jar 0(+0 -0)

lib/joda-time-2.0.jar 0(+0 -0)

lib/jopt-simple-4.3.jar 0(+0 -0)

lib/log4j-1.2.16.jar 0(+0 -0)

lib/mail-1.4.5.jar 0(+0 -0)

lib/servlet-api-2.5.jar 0(+0 -0)

lib/slf4j-api-1.6.1.jar 0(+0 -0)

lib/slf4j-log4j12-1.6.4.jar 0(+0 -0)

lib/velocity-1.7.jar 0(+0 -0)

lib/velocity-tools-2.0.jar 0(+0 -0)

unit/build.xml 3(+2 -1)

Details

.gitignore 1(+1 -0)

diff --git a/.gitignore b/.gitignore
index 849ddff..c0f64a8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
 dist/
+build/

build.xml 801(+435 -366)

diff --git a/build.xml b/build.xml
index 65fa4ba..9b6c0cb 100644
--- a/build.xml
+++ b/build.xml
@@ -1,399 +1,468 @@
 <?xml version="1.0"?>
 
-<project name="azkaban" basedir="." default="all">
-	<property file="build.properties" />
-	<property name="base.dir" value="${basedir}" />
-	<property name="dist.jar.dir" value="${basedir}/dist/jars" />
-	<property name="dist.dust.dir" value="${basedir}/dist/dust" />
-	<property name="dist.less.dir" value="${basedir}/dist/less" />
-	<property name="dist.web.dir" value="${basedir}/dist/web" />
-	<property name="dist.classes.dir" value="${basedir}/dist/classes" />
-	<property name="dist.packages.dir" value="${basedir}/dist/packages" />
-	<property name="dist.web.package.dir" value="${dist.packages.dir}/azkaban-web-server" />
-	<property name="dist.exec.package.dir" value="${dist.packages.dir}/azkaban-exec-server" />
-	<property name="dist.solo.package.dir" value="${dist.packages.dir}/azkaban-solo-server" />
-	<property name="dist.sql.package.dir" value="${dist.packages.dir}/sql" />	
+<project name="azkaban" basedir="." default="all"
+    xmlns:ivy="antlib:org.apache.ivy.ant">
+  <property file="build.properties" />
+  <property name="base.dir" value="${basedir}" />
+  <property name="dist.jar.dir" value="${basedir}/dist/jars" />
+  <property name="dist.dust.dir" value="${basedir}/dist/dust" />
+  <property name="dist.less.dir" value="${basedir}/dist/less" />
+  <property name="dist.web.dir" value="${basedir}/dist/web" />
+  <property name="dist.classes.dir" value="${basedir}/dist/classes" />
+  <property name="dist.packages.dir" value="${basedir}/dist/packages" />
+  <property name="dist.web.package.dir" value="${dist.packages.dir}/azkaban-web-server" />
+  <property name="dist.exec.package.dir" value="${dist.packages.dir}/azkaban-exec-server" />
+  <property name="dist.solo.package.dir" value="${dist.packages.dir}/azkaban-solo-server" />
+  <property name="dist.sql.package.dir" value="${dist.packages.dir}/sql" />  
 
-	<property name="conf.dir" value="${basedir}/conf" />
-	<property name="web.package.dir" value="${basedir}/src/package/webserver" />
-	<property name="exec.package.dir" value="${basedir}/src/package/execserver" />
-	<property name="solo.package.dir" value="${basedir}/src/package/soloserver" />
-	
-	<property name="lib.dir" value="${basedir}/lib" />
-	<property name="bin.dir" value="${basedir}/bin" />
-	<property name="java.src.dir" value="${basedir}/src/java" />
-	<property name="dust.src.dir" value="${basedir}/src/tl" />
-	<property name="less.src.dir" value="${basedir}/src/less" />
-	<property name="web.src.dir" value="${basedir}/src/web" />
-	<property name="sql.src.dir" value="${basedir}/src/sql" />
+  <property name="conf.dir" value="${basedir}/conf" />
+  <property name="web.package.dir" value="${basedir}/src/package/webserver" />
+  <property name="exec.package.dir" value="${basedir}/src/package/execserver" />
+  <property name="solo.package.dir" value="${basedir}/src/package/soloserver" />
+  
+  <property name="bin.dir" value="${basedir}/bin" />
+  <property name="java.src.dir" value="${basedir}/src/java" />
+  <property name="dust.src.dir" value="${basedir}/src/tl" />
+  <property name="less.src.dir" value="${basedir}/src/less" />
+  <property name="web.src.dir" value="${basedir}/src/web" />
+  <property name="sql.src.dir" value="${basedir}/src/sql" />
+  
+  <property name="version.file" value="${dist.packages.dir}/azkaban.version" />
+  
+  <!-- Ivy properties -->
+  <property name="mvnrepo" value="http://repo2.maven.org/maven2" />
+  <property name="build.dir" value="${base.dir}/build" />
+  <property name="ivy.dir" location="ivy" />
+  <loadproperties srcfile="${ivy.dir}/libraries.properties" />
+  
+  <property name="loglevel" value="default" />
+  <property name="ivy.jar" value="${ivy.dir}/ivy-${ivy.version}.jar" />
+  <property name="ivy.repo.url" 
+      value="${mvnrepo}/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar" />
+  <property name="ivysettings.xml" value="${ivy.dir}/ivysettings.xml" />
+  <property name="build.ivy.dir" location="${build.dir}/ivy" />
+  <property name="build.ivy.lib.dir" location="${build.ivy.dir}/lib" />
+  <property name="ivy.artifact.retrieve.pattern" value="[artifact]-[revision].[ext]" />
 
-	<property name="version.file" value="${dist.packages.dir}/azkaban.version" />
-	
-	<property environment="env" />
+  <property environment="env" />
 
-	<path id="main.classpath">
-		<fileset dir="${lib.dir}">
-			<include name="*.jar" />
-		</fileset>
+  <path id="main.classpath">
+    <fileset dir="${build.ivy.lib.dir}">
+      <include name="*.jar" />
+    </fileset>
 
-		<pathelement path="${dist.classes.dir}" />
-	</path>
+    <pathelement path="${dist.classes.dir}" />
+  </path>
 
-	<!-- set the build number based on environment variable, otherwise blank -->
-	<property environment="env" description="System environment variables (including those set by Hudson)" />
-	
-	<target name="all" depends="clean, package" description="Builds jars and packages." />
-	
-	<available file=".git" type="dir" property="git.present"/>
-	<target name="git.info" description="Store git info" if="git.present">
-	    <exec executable="git" outputproperty="git.commithash" failifexecutionfails="false" errorproperty="">
-	        <arg value="rev-parse"/>
-	    	<arg value="HEAD"/>
-	    </exec>
-		
-	    <exec executable="git" outputproperty="git.repo" failifexecutionfails="false" errorproperty="">
-	        <arg value="config"/>
-	    	<arg value="--get"/>
-	    	<arg value="remote.origin.url"/>
-	    </exec>
-		
-	    <exec executable="git" outputproperty="git.tag" failifexecutionfails="false" errorproperty="">
-	        <arg value="describe"/>
-	    	<arg value="--abbrev=0"/>
-	    	<arg value="--tags"/>
-	    </exec>
-	    <condition property="git.tag" value="${git.tag}" else="${version}">
-	        <and>
-	            <isset property="git.tag"/>
-	            <length string="${git.tag}" trim="yes" length="0" when="greater"/>
-	        </and>
-	    </condition>
-		<echo>Git tag found to be ${git.commithash} with tag ${git.tag} from repo ${git.repo}</echo>
-	</target>
-	
-	<target name="clean" description="Delete generated files.">
-		<echo message="Deleting generated files in dist" />
-		<delete dir="${dist.jar.dir}" />
-		<delete dir="${dist.classes.dir}" />
-		<delete dir="${dist.dust.dir}" />
-		<delete dir="${dist.less.dir}" />
+  <!-- set the build number based on environment variable, otherwise blank -->
+  <property environment="env" description="System environment variables (including those set by Hudson)" />
+  
+  <target name="all" depends="clean, package" description="Builds jars and packages." />
+  
+  <target name="ivy-probe-antlib">
+    <condition property="ivy.found">
+      <typefound uri="antlib:org.apache.ivy.ant" name="cleancache" />
+    </condition>
+  </target>
+
+  <target name="ivy-download" description="Downloads Ivy." unless="offline">
+    <get src="${ivy.repo.url}" dest="${ivy.jar}" usetimestamp="true" />
+  </target>
+
+  <target name="ivy-init-dirs">
+    <mkdir dir="${build.ivy.dir}" />
+    <mkdir dir="${build.ivy.lib.dir}" />
+  </target>
+
+  <target name="ivy-init-antlib" depends="ivy-download, ivy-init-dirs, ivy-probe-antlib" unless="ivy.found">
+    <typedef uri="antlib:org.apache.ivy.ant" onerror="fail" loaderRef="ivyLoader">
+      <classpath>
+        <pathelement location="${ivy.jar}" />
+      </classpath>
+    </typedef>
+    <fail>
+      <condition>
+        <not>
+          <typefound uri="antlib:org.apache.ivy.ant" name="cleancache" />
+        </not>
+      </condition>
+      You need Apache Ivy 2.0 or later from http://ant.apache.org/
+      It sould not be loaded from ${ivy.repo.url}
+    </fail>
+  </target>
+
+  <target name="ivy-init" depends="ivy-init-antlib">
+    <ivy:configure settingsid="${ant.project.name}.ivy.settings" file="${ivysettings.xml}" override="false" />
+  </target>
+
+  <target name="ivy-resolve" depends="ivy-init" description="Resolve dependencies with Ivy">
+    <ivy:resolve settingsRef="${ant.project.name}.ivy.settings" log="${loglevel}" />
+  </target>
+
+  <target name="ivy-retrieve" depends="ivy-resolve" description="Retrieve Ivy-managed artifacts.">
+    <ivy:retrieve settingsRef="${ant.project.name}.ivy.settings"
+        pattern="${build.ivy.lib.dir}/${ivy.artifact.retrieve.pattern}" log="${loglevel}" />
+  </target>
+  
+  <available file=".git" type="dir" property="git.present"/>
+  <target name="git.info" description="Store git info" if="git.present">
+    <exec executable="git" outputproperty="git.commithash" failifexecutionfails="false" errorproperty="">
+      <arg value="rev-parse"/>
+      <arg value="HEAD"/>
+    </exec>
+  
+    <exec executable="git" outputproperty="git.repo" failifexecutionfails="false" errorproperty="">
+      <arg value="config"/>
+      <arg value="--get"/>
+      <arg value="remote.origin.url"/>
+    </exec>
+  
+    <exec executable="git" outputproperty="git.tag" failifexecutionfails="false" errorproperty="">
+      <arg value="describe"/>
+      <arg value="--abbrev=0"/>
+      <arg value="--tags"/>
+    </exec>
+    <condition property="git.tag" value="${git.tag}" else="${version}">
+      <and>
+        <isset property="git.tag"/>
+        <length string="${git.tag}" trim="yes" length="0" when="greater"/>
+      </and>
+    </condition>
+    <echo>Git tag found to be ${git.commithash} with tag ${git.tag} from repo ${git.repo}</echo>
+  </target>
+  
+  <target name="clean" description="Delete generated files.">
+    <echo message="Deleting generated files in dist" />
+    <delete dir="${dist.jar.dir}" />
+    <delete dir="${dist.classes.dir}" />
+    <delete dir="${dist.dust.dir}" />
+    <delete dir="${dist.less.dir}" />
     <exec dir="${dust.src.dir}" executable="make" failonerror="true">
       <arg value="clean" />
     </exec>
     <exec dir="${less.src.dir}" executable="make" failonerror="true">
       <arg value="clean" />
     </exec>
-	</target>
+  </target>
+  
+  <target name="distclean" depends="clean" description="Delete all generated files.">
+    <delete dir="${build.dir}" />
+    <delete>
+      <fileset dir="${ivy.dir}">
+        <include name="*.jar" />
+      </fileset>
+    </delete>
+  </target>
 
-	<target name="dust" description="Compile Less css files.">
-		<!-- Compile dustjs templates -->
-		<delete dir="${dist.dust.dir}" />
-		<mkdir dir="${dist.dust.dir}" />
-		<exec dir="${dust.src.dir}" executable="make" failonerror="true"/>
-		<copy todir="${dist.dust.dir}">
-			<fileset dir="${dust.src.dir}/obj" includes="*.js" />
-		</copy>
-	</target>
-	
-	<target name="less" description="Compile Less css files.">
-		<!-- Compile LESS to CSS -->
-		<delete dir="${dist.less.dir}" />
-		<mkdir dir="${dist.less.dir}" />
-		<exec dir="${less.src.dir}" executable="make" failonerror="true"/>
-		<copy todir="${dist.less.dir}" >
-			<fileset dir="${less.src.dir}/obj" includes="*.css" />
-		</copy>
-	</target>
-	
-	<target name="repo.file" depends="git.info" description="Create a file to reference the git commit">
-		<delete file="azkaban.version" />
-		
-		<tstamp>
-			<format timezone="UTC" property="current.time" pattern="yyyy-MM-dd hh:mm zzz"/>
-		</tstamp>
-		
-		<!-- Need to remove indents of the echo contents, because echo into file includes the tabs -->
+  <target name="dust" description="Compile Less css files.">
+    <!-- Compile dustjs templates -->
+    <delete dir="${dist.dust.dir}" />
+    <mkdir dir="${dist.dust.dir}" />
+    <exec dir="${dust.src.dir}" executable="make" failonerror="true"/>
+    <copy todir="${dist.dust.dir}">
+      <fileset dir="${dust.src.dir}/obj" includes="*.js" />
+    </copy>
+  </target>
+  
+  <target name="less" description="Compile Less css files.">
+    <!-- Compile LESS to CSS -->
+    <delete dir="${dist.less.dir}" />
+    <mkdir dir="${dist.less.dir}" />
+    <exec dir="${less.src.dir}" executable="make" failonerror="true"/>
+    <copy todir="${dist.less.dir}" >
+      <fileset dir="${less.src.dir}/obj" includes="*.css" />
+    </copy>
+  </target>
+  
+  <target name="repo.file" depends="git.info" description="Create a file to reference the git commit">
+    <delete file="azkaban.version" />
+    
+    <tstamp>
+      <format timezone="UTC" property="current.time" pattern="yyyy-MM-dd hh:mm zzz"/>
+    </tstamp>
+    
+    <!-- Need to remove indents of the echo contents, because echo into file includes the tabs -->
 <echo file="${version.file}">
 ${git.tag}
 ${git.commithash}
 ${git.repo}
 ${current.time}
 </echo>
-	</target>
-	
-	<target name="build" depends="git.info, repo.file" description="Compile main source tree java files">
-		<echo>Building Classes</echo>
-		<delete dir="${dist.classes.dir}" />
-		<mkdir dir="${dist.classes.dir}" />
-		
-		<!-- copy non-java files to classes dir to load from classpath -->
-		<copy todir="${dist.classes.dir}">
-			<fileset dir="${java.src.dir}">
-				<exclude name="**/*.java" />
-			</fileset>
-		</copy>
-		
-		<javac fork="true" destdir="${dist.classes.dir}"
-			target="1.6" debug="true" deprecation="false" failonerror="true">
-			<src path="${java.src.dir}" />
-			<classpath refid="main.classpath" />
-		</javac>
+  </target>
+  
+  <target name="build" depends="git.info, repo.file, ivy-retrieve" description="Compile main source tree java files">
+    <echo>Building Classes</echo>
+    <delete dir="${dist.classes.dir}" />
+    <mkdir dir="${dist.classes.dir}" />
+    
+    <!-- copy non-java files to classes dir to load from classpath -->
+    <copy todir="${dist.classes.dir}">
+      <fileset dir="${java.src.dir}">
+        <exclude name="**/*.java" />
+      </fileset>
+    </copy>
+    
+    <javac fork="true" destdir="${dist.classes.dir}"
+      target="1.6" debug="true" deprecation="false" failonerror="true">
+      <src path="${java.src.dir}" />
+      <classpath refid="main.classpath" />
+    </javac>
 
-		<antcall target="dust"></antcall>
-		<antcall target="less"></antcall>
-	</target>
-	
-	<target name="webmin" description="Copies only the non compiled web resources to dist dir">
-		<copy todir="${dist.web.dir}" overwrite="true">
-			<fileset dir="${web.src.dir}" />
-		</copy>
-	</target>
-	
-	<target name="web" description="Creates web resourses in a dir. Useful for development">
-		<mkdir dir="${dist.web.dir}" />
-		
-		<antcall target="webmin"></antcall>
-		<antcall target="dust"></antcall>
-		<antcall target="less"></antcall>
-		
-		<!-- Copy compiled dust templates -->
-		<copy todir="${dist.web.dir}/js">
-			<fileset dir="${dist.dust.dir}" />
-		</copy>
+    <antcall target="dust"></antcall>
+    <antcall target="less"></antcall>
+  </target>
+  
+  <target name="webmin" description="Copies only the non compiled web resources to dist dir">
+    <copy todir="${dist.web.dir}" overwrite="true">
+      <fileset dir="${web.src.dir}" />
+    </copy>
+  </target>
+  
+  <target name="web" description="Creates web resourses in a dir. Useful for development">
+    <mkdir dir="${dist.web.dir}" />
+    
+    <antcall target="webmin"></antcall>
+    <antcall target="dust"></antcall>
+    <antcall target="less"></antcall>
+    
+    <!-- Copy compiled dust templates -->
+    <copy todir="${dist.web.dir}/js">
+      <fileset dir="${dist.dust.dir}" />
+    </copy>
 
-		<!-- Copy compiled less CSS -->
-		<copy todir="${dist.web.dir}/css">
-			<fileset dir="${dist.less.dir}" />
-		</copy>
-	</target>
-	
-	<target name="jars" depends="build" description="Create azkaban jar">
-		<mkdir dir="${dist.jar.dir}" />
-		<jar destfile="${dist.jar.dir}/azkaban-${git.tag}.jar">
-			<fileset dir="${dist.classes.dir}">
-				<include name="**/*.*" />
-			</fileset>
-		</jar>
-	</target>
-	
-	<target name="create-update-script" description="Prepare the creation of the Azkaban Scripts">
-		<!-- Generic update table scripts -->
-		<concat destfile="${dist.sql.package.dir}/update-all-sql-${updateVersion}.sql" fixlastline="yes">
-			<fileset dir="${sql.src.dir}" >
-				<include name="update.*.${updateVersion}.sql"/>
-			</fileset>	
-		</concat>
-	</target>
-	
-	<target name="create-update-script-2.1" description="Prepare the creation of the Azkaban Scripts">
-		<!-- 2.1 added the active_sla table -->
-		<concat destfile="${dist.sql.package.dir}/update-all-sql-2.1.sql" fixlastline="yes">
-			<fileset dir="${sql.src.dir}" >
-				<include name="create.active_sla.sql"/>
-				<include name="update.*.2.1.sql"/>
-			</fileset>	
-		</concat>
-	</target>
-	
-	<target name="create-update-script-2.2" description="Prepare the creation of the Azkaban Scripts">
-		<!-- 2.2 added the properties table -->
-		<concat destfile="${dist.sql.package.dir}/update-all-sql-2.2.sql" fixlastline="yes">
-			<fileset dir="${sql.src.dir}" >
-				<include name="create.properties.sql"/>
-				<include name="update.*.2.2.sql"/>
-			</fileset>	
-		</concat>
-	</target>
-	
-	<target name="package-sql-scripts" description="Creates a package of sql">
-		<delete dir="${dist.sql.package.dir}" />
-		<mkdir dir="${dist.sql.package.dir}" />
+    <!-- Copy compiled less CSS -->
+    <copy todir="${dist.web.dir}/css">
+      <fileset dir="${dist.less.dir}" />
+    </copy>
+  </target>
+  
+  <target name="jars" depends="build" description="Create azkaban jar">
+    <mkdir dir="${dist.jar.dir}" />
+    <jar destfile="${dist.jar.dir}/azkaban-${git.tag}.jar">
+      <fileset dir="${dist.classes.dir}">
+        <include name="**/*.*" />
+      </fileset>
+    </jar>
+  </target>
+  
+  <target name="create-update-script" description="Prepare the creation of the Azkaban Scripts">
+    <!-- Generic update table scripts -->
+    <concat destfile="${dist.sql.package.dir}/update-all-sql-${updateVersion}.sql" fixlastline="yes">
+      <fileset dir="${sql.src.dir}" >
+        <include name="update.*.${updateVersion}.sql"/>
+      </fileset>
+    </concat>
+  </target>
+  
+  <target name="create-update-script-2.1" description="Prepare the creation of the Azkaban Scripts">
+    <!-- 2.1 added the active_sla table -->
+    <concat destfile="${dist.sql.package.dir}/update-all-sql-2.1.sql" fixlastline="yes">
+      <fileset dir="${sql.src.dir}" >
+        <include name="create.active_sla.sql"/>
+        <include name="update.*.2.1.sql"/>
+      </fileset>
+    </concat>
+  </target>
+  
+  <target name="create-update-script-2.2" description="Prepare the creation of the Azkaban Scripts">
+    <!-- 2.2 added the properties table -->
+    <concat destfile="${dist.sql.package.dir}/update-all-sql-2.2.sql" fixlastline="yes">
+      <fileset dir="${sql.src.dir}" >
+        <include name="create.properties.sql"/>
+        <include name="update.*.2.2.sql"/>
+      </fileset>
+    </concat>
+  </target>
+  
+  <target name="package-sql-scripts" description="Creates a package of sql">
+    <delete dir="${dist.sql.package.dir}" />
+    <mkdir dir="${dist.sql.package.dir}" />
 
-		<concat destfile="${dist.sql.package.dir}/create-all-sql-${git.tag}.sql" fixlastline="yes">
-			<fileset dir="${sql.src.dir}" >
-				<exclude name="update.*.sql"/>
-				<exclude name="database.properties"/>
-			</fileset>	
-		</concat>
-		
-		<!-- Collect various update scripts. -->
-		<!-- Not sure how to do this better yet. -->
-		<antcall target="create-update-script-2.1"></antcall>
-		<antcall target="create-update-script-2.2"></antcall>
-		<!-- End script collection-->
-		
-		<copy todir="${dist.sql.package.dir}" >
-			<fileset dir="${sql.src.dir}" />
-		</copy>
-		<echo file="${dist.sql.package.dir}/database.properties" append="true">version=${git.tag}</echo>
+    <concat destfile="${dist.sql.package.dir}/create-all-sql-${git.tag}.sql" fixlastline="yes">
+      <fileset dir="${sql.src.dir}" >
+        <exclude name="update.*.sql"/>
+        <exclude name="database.properties"/>
+      </fileset>
+    </concat>
+    
+    <!-- Collect various update scripts. -->
+    <!-- Not sure how to do this better yet. -->
+    <antcall target="create-update-script-2.1"></antcall>
+    <antcall target="create-update-script-2.2"></antcall>
+    <!-- End script collection-->
+    
+    <copy todir="${dist.sql.package.dir}" >
+      <fileset dir="${sql.src.dir}" />
+    </copy>
+    <echo file="${dist.sql.package.dir}/database.properties" append="true">version=${git.tag}</echo>
 
-		<tar destfile="${dist.sql.package.dir}/${name}-sql-script-${git.tag}.tar.gz" compression="gzip" longfile="gnu">
-			<tarfileset dir="${dist.sql.package.dir}" prefix="azkaban-${git.tag}" filemode="755" />
-		</tar>
-	</target>
+    <tar destfile="${dist.sql.package.dir}/${name}-sql-script-${git.tag}.tar.gz" compression="gzip" longfile="gnu">
+      <tarfileset dir="${dist.sql.package.dir}" prefix="azkaban-${git.tag}" filemode="755" />
+    </tar>
+  </target>
 
-	<target name="package-web-server" depends="jars" description="Creates a package for the webserver">
-		<delete dir="${dist.web.package.dir}" />
-		<mkdir dir="${dist.web.package.dir}" />
-		<mkdir dir="${dist.web.package.dir}/conf" />
-		<mkdir dir="${dist.web.package.dir}/bin" />
-		<mkdir dir="${dist.web.package.dir}/lib" />
-		<mkdir dir="${dist.web.package.dir}/web" />
-		<mkdir dir="${dist.web.package.dir}/plugins" />
-		<mkdir dir="${dist.web.package.dir}/extlib" />	
-			
-		<!-- Copy Azkaban jars and libs-->
-		<copy file="${dist.jar.dir}/azkaban-${git.tag}.jar" todir="${dist.web.package.dir}/lib" />
-		<copy todir="${dist.web.package.dir}/lib" >
-			<fileset dir="${lib.dir}" >
-				<exclude name="hadoop-core*.jar"/>
-			</fileset>		
-		</copy>
-		
-		<!-- Copy bin files for web server only-->
-		<copy todir="${dist.web.package.dir}/bin">
-			<fileset dir="${web.package.dir}/bin"/>
-		</copy>
-		
-		<!-- Copy web files -->
-		<copy todir="${dist.web.package.dir}/web">
-			<fileset dir="${web.src.dir}" />
-		</copy>
+  <target name="package-web-server" depends="jars" description="Creates a package for the webserver">
+    <delete dir="${dist.web.package.dir}" />
+    <mkdir dir="${dist.web.package.dir}" />
+    <mkdir dir="${dist.web.package.dir}/conf" />
+    <mkdir dir="${dist.web.package.dir}/bin" />
+    <mkdir dir="${dist.web.package.dir}/lib" />
+    <mkdir dir="${dist.web.package.dir}/web" />
+    <mkdir dir="${dist.web.package.dir}/plugins" />
+    <mkdir dir="${dist.web.package.dir}/extlib" />
+      
+    <!-- Copy Azkaban jars and libs-->
+    <copy file="${dist.jar.dir}/azkaban-${git.tag}.jar" todir="${dist.web.package.dir}/lib" />
+    <copy todir="${dist.web.package.dir}/lib" >
+      <fileset dir="${build.ivy.lib.dir}" >
+        <exclude name="hadoop-core*.jar"/>
+      </fileset>
+    </copy>
+    
+    <!-- Copy bin files for web server only-->
+    <copy todir="${dist.web.package.dir}/bin">
+      <fileset dir="${web.package.dir}/bin"/>
+    </copy>
+    
+    <!-- Copy web files -->
+    <copy todir="${dist.web.package.dir}/web">
+      <fileset dir="${web.src.dir}" />
+    </copy>
 
-		<!-- Copy compiled dust templates -->
-		<copy todir="${dist.web.package.dir}/web/js">
-			<fileset dir="${dist.dust.dir}" />
-		</copy>
+    <!-- Copy compiled dust templates -->
+    <copy todir="${dist.web.package.dir}/web/js">
+      <fileset dir="${dist.dust.dir}" />
+    </copy>
 
-		<!-- Copy compiled less CSS -->
-		<copy todir="${dist.web.package.dir}/web/css">
-			<fileset dir="${dist.less.dir}" />
-		</copy>
-		
-		<!-- Copy conf create table scripts -->
-		<copy todir="${dist.web.package.dir}/conf">
-			<fileset dir="${web.package.dir}/conf" />
-		</copy>
-		
-		<!-- Copy version file -->
-		<copy file="${version.file}" todir="${dist.web.package.dir}" />
-		
-		<!-- Tarball it -->
-		<tar destfile="${dist.web.package.dir}/${name}-web-server-${git.tag}.tar.gz" compression="gzip" longfile="gnu">
-			<tarfileset dir="${dist.web.package.dir}" prefix="azkaban-${git.tag}" filemode="755" includes="bin/*" />
-			
-			<tarfileset dir="${dist.web.package.dir}" prefix="azkaban-${git.tag}" includes="**">
-				<exclude name="bin/*"/>
-			</tarfileset>
-		</tar>
-	</target>
-	
-	<target name="package-exec-server" depends="jars" description="Creates a package for the execserver">
-		<delete dir="${dist.exec.package.dir}" />
-		<mkdir dir="${dist.exec.package.dir}" />
-		<mkdir dir="${dist.exec.package.dir}/conf" />
-		<mkdir dir="${dist.exec.package.dir}/bin" />
-		<mkdir dir="${dist.exec.package.dir}/lib" />
-		<mkdir dir="${dist.exec.package.dir}/plugins" />
-		<mkdir dir="${dist.exec.package.dir}/extlib" />
-				
-		<!-- Copy Azkaban jars and libs-->
-		<copy file="${dist.jar.dir}/azkaban-${git.tag}.jar" todir="${dist.exec.package.dir}/lib" />
-		<copy todir="${dist.exec.package.dir}/lib" >
-			<fileset dir="${lib.dir}" >
-				<exclude name="hadoop-core*.jar"/>
-			</fileset>
-		</copy>
-		
-		<!-- Copy bin files for exec server only-->
-		<copy todir="${dist.exec.package.dir}/bin" >
-			<fileset dir="${exec.package.dir}/bin"/>
-		</copy>
+    <!-- Copy compiled less CSS -->
+    <copy todir="${dist.web.package.dir}/web/css">
+      <fileset dir="${dist.less.dir}" />
+    </copy>
+    
+    <!-- Copy conf create table scripts -->
+    <copy todir="${dist.web.package.dir}/conf">
+      <fileset dir="${web.package.dir}/conf" />
+    </copy>
+    
+    <!-- Copy version file -->
+    <copy file="${version.file}" todir="${dist.web.package.dir}" />
+    
+    <!-- Tarball it -->
+    <tar destfile="${dist.web.package.dir}/${name}-web-server-${git.tag}.tar.gz" compression="gzip" longfile="gnu">
+      <tarfileset dir="${dist.web.package.dir}" prefix="azkaban-${git.tag}" filemode="755" includes="bin/*" />
+      
+      <tarfileset dir="${dist.web.package.dir}" prefix="azkaban-${git.tag}" includes="**">
+        <exclude name="bin/*"/>
+      </tarfileset>
+    </tar>
+  </target>
+  
+  <target name="package-exec-server" depends="jars" description="Creates a package for the execserver">
+    <delete dir="${dist.exec.package.dir}" />
+    <mkdir dir="${dist.exec.package.dir}" />
+    <mkdir dir="${dist.exec.package.dir}/conf" />
+    <mkdir dir="${dist.exec.package.dir}/bin" />
+    <mkdir dir="${dist.exec.package.dir}/lib" />
+    <mkdir dir="${dist.exec.package.dir}/plugins" />
+    <mkdir dir="${dist.exec.package.dir}/extlib" />
+        
+    <!-- Copy Azkaban jars and libs-->
+    <copy file="${dist.jar.dir}/azkaban-${git.tag}.jar" todir="${dist.exec.package.dir}/lib" />
+    <copy todir="${dist.exec.package.dir}/lib" >
+      <fileset dir="${build.ivy.lib.dir}" >
+        <exclude name="hadoop-core*.jar"/>
+      </fileset>
+    </copy>
+    
+    <!-- Copy bin files for exec server only-->
+    <copy todir="${dist.exec.package.dir}/bin" >
+      <fileset dir="${exec.package.dir}/bin"/>
+    </copy>
 
-		<!-- Copy conf files -->
-		<copy todir="${dist.exec.package.dir}/conf" >
-			<fileset dir="${exec.package.dir}/conf" />
-		</copy>
-		
-		<!-- Copy version file -->
-		<copy file="${version.file}" todir="${dist.exec.package.dir}" />
-		
-		<!-- Tarball it -->
-		<tar destfile="${dist.exec.package.dir}/${name}-executor-server-${git.tag}.tar.gz" compression="gzip" longfile="gnu">
-			<tarfileset dir="${dist.exec.package.dir}" prefix="azkaban-${git.tag}" filemode="755" includes="bin/*" />
-			
-			<tarfileset dir="${dist.exec.package.dir}" prefix="azkaban-${git.tag}" includes="**">
-				<exclude name="bin/*"/>
-			</tarfileset>
-		</tar>
-	</target>
-	
-	<target name="package-solo-server" depends="jars" description="Creates a package for the solo server">
-		<delete dir="${dist.solo.package.dir}" />
-		<mkdir dir="${dist.solo.package.dir}" />
-		<mkdir dir="${dist.solo.package.dir}/conf" />
-		<mkdir dir="${dist.solo.package.dir}/bin" />
-		<mkdir dir="${dist.solo.package.dir}/lib" />
-		<mkdir dir="${dist.solo.package.dir}/plugins" />
-		<mkdir dir="${dist.solo.package.dir}/extlib" />
-		<mkdir dir="${dist.solo.package.dir}/sql" />
-				
-		<!-- Copy Azkaban jars and libs-->
-		<copy file="${dist.jar.dir}/azkaban-${git.tag}.jar" todir="${dist.solo.package.dir}/lib" />
-		<copy todir="${dist.solo.package.dir}/lib" >
-			<fileset dir="${lib.dir}" >
-				<exclude name="hadoop-core*.jar"/>
-			</fileset>
-		</copy>
-		
-		<!-- Copy bin files for exec server only-->
-		<copy todir="${dist.solo.package.dir}/bin" >
-			<fileset dir="${solo.package.dir}/bin"/>
-		</copy>
+    <!-- Copy conf files -->
+    <copy todir="${dist.exec.package.dir}/conf" >
+      <fileset dir="${exec.package.dir}/conf" />
+    </copy>
+    
+    <!-- Copy version file -->
+    <copy file="${version.file}" todir="${dist.exec.package.dir}" />
+    
+    <!-- Tarball it -->
+    <tar destfile="${dist.exec.package.dir}/${name}-executor-server-${git.tag}.tar.gz" compression="gzip" longfile="gnu">
+      <tarfileset dir="${dist.exec.package.dir}" prefix="azkaban-${git.tag}" filemode="755" includes="bin/*" />
+      
+      <tarfileset dir="${dist.exec.package.dir}" prefix="azkaban-${git.tag}" includes="**">
+        <exclude name="bin/*"/>
+      </tarfileset>
+    </tar>
+  </target>
+  
+  <target name="package-solo-server" depends="jars" description="Creates a package for the solo server">
+    <delete dir="${dist.solo.package.dir}" />
+    <mkdir dir="${dist.solo.package.dir}" />
+    <mkdir dir="${dist.solo.package.dir}/conf" />
+    <mkdir dir="${dist.solo.package.dir}/bin" />
+    <mkdir dir="${dist.solo.package.dir}/lib" />
+    <mkdir dir="${dist.solo.package.dir}/plugins" />
+    <mkdir dir="${dist.solo.package.dir}/extlib" />
+    <mkdir dir="${dist.solo.package.dir}/sql" />
+        
+    <!-- Copy Azkaban jars and libs-->
+    <copy file="${dist.jar.dir}/azkaban-${git.tag}.jar" todir="${dist.solo.package.dir}/lib" />
+    <copy todir="${dist.solo.package.dir}/lib" >
+      <fileset dir="${build.ivy.lib.dir}" >
+        <exclude name="hadoop-core*.jar"/>
+      </fileset>
+    </copy>
+    
+    <!-- Copy bin files for exec server only-->
+    <copy todir="${dist.solo.package.dir}/bin" >
+      <fileset dir="${solo.package.dir}/bin"/>
+    </copy>
 
-		<!-- Copy conf files -->
-		<copy todir="${dist.solo.package.dir}/conf" >
-			<fileset dir="${solo.package.dir}/conf" />
-		</copy>
-		
-		<!-- Copy web files -->
-		<copy todir="${dist.solo.package.dir}/web" >
-			<fileset dir="${web.src.dir}" />
-		</copy>
-		
-		<!-- Copy compiled dust templates -->
-		<copy todir="${dist.solo.package.dir}/web/js">
-			<fileset dir="${dist.dust.dir}" />
-		</copy>
-		
-		<!-- Copy compiled less CSS -->
-		<copy todir="${dist.solo.package.dir}/web/css">
-			<fileset dir="${dist.less.dir}" />
-		</copy>
-		
-		<!-- Copy sql files -->
-		<copy todir="${dist.solo.package.dir}/sql" >
-			<fileset dir="${sql.src.dir}" />
-		</copy>
-		<echo file="${dist.solo.package.dir}/sql/database.properties" append="true">version=${git.tag}</echo>
-		
-		<!-- Copy version file -->
-		<copy file="${version.file}" todir="${dist.solo.package.dir}" />
+    <!-- Copy conf files -->
+    <copy todir="${dist.solo.package.dir}/conf" >
+      <fileset dir="${solo.package.dir}/conf" />
+    </copy>
+    
+    <!-- Copy web files -->
+    <copy todir="${dist.solo.package.dir}/web" >
+      <fileset dir="${web.src.dir}" />
+    </copy>
+    
+    <!-- Copy compiled dust templates -->
+    <copy todir="${dist.solo.package.dir}/web/js">
+      <fileset dir="${dist.dust.dir}" />
+    </copy>
+    
+    <!-- Copy compiled less CSS -->
+    <copy todir="${dist.solo.package.dir}/web/css">
+      <fileset dir="${dist.less.dir}" />
+    </copy>
+    
+    <!-- Copy sql files -->
+    <copy todir="${dist.solo.package.dir}/sql" >
+      <fileset dir="${sql.src.dir}" />
+    </copy>
+    <echo file="${dist.solo.package.dir}/sql/database.properties" append="true">version=${git.tag}</echo>
+    
+    <!-- Copy version file -->
+    <copy file="${version.file}" todir="${dist.solo.package.dir}" />
 
-		<!-- Tarball it -->
-		<tar destfile="${dist.solo.package.dir}/${name}-solo-server-${git.tag}.tar.gz" compression="gzip" longfile="gnu">
-			<tarfileset dir="${dist.solo.package.dir}" prefix="azkaban-${git.tag}" filemode="755" includes="bin/*" />
-			
-			<tarfileset dir="${dist.solo.package.dir}" prefix="azkaban-${git.tag}" includes="**">
-				<exclude name="bin/*"/>
-			</tarfileset>
-		</tar>
-	</target>
-	
-	<target name="package-all" depends="package-exec-server, package-web-server, package-solo-server, package-sql-scripts" description="Create all packages">
-	</target>
+    <!-- Tarball it -->
+    <tar destfile="${dist.solo.package.dir}/${name}-solo-server-${git.tag}.tar.gz" compression="gzip" longfile="gnu">
+      <tarfileset dir="${dist.solo.package.dir}" prefix="azkaban-${git.tag}" filemode="755" includes="bin/*" />
+      
+      <tarfileset dir="${dist.solo.package.dir}" prefix="azkaban-${git.tag}" includes="**">
+        <exclude name="bin/*"/>
+      </tarfileset>
+    </tar>
+  </target>
+  
+  <target name="package-all" depends="package-exec-server, package-web-server, package-solo-server, package-sql-scripts" description="Create all packages">
+  </target>
 
-	<target name="package" depends="package-all" description="Create all packages">
-	</target>
+  <target name="package" depends="package-all" description="Create all packages">
+  </target>
 
 </project>

ivy.xml 71(+71 -0)

diff --git a/ivy.xml b/ivy.xml
new file mode 100644
index 0000000..4e85d54
--- /dev/null
+++ b/ivy.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ivy-module version="1.0" xmlns:m="http://ant.apache.org/ivy/maven">
+  <info 
+      organisation="com.linkedin.azkaban"
+      module="azkaban"
+      revision="2.5" status="release">
+  </info>
+
+  <dependencies>
+    <dependency name="commons-collections" org="commons-collections"
+        rev="${commons-collections.version}" conf="default->master" />
+    <dependency name="commons-configuration" org="commons-configuration"
+        rev="${commons-configuration.version}" conf="default->master" />
+    <dependency name="commons-dbcp" org="commons-dbcp" 
+        rev="${commons-dbcp.version}" conf="default->master" />
+    <dependency name="commons-dbutils" org="commons-dbutils" 
+        rev="${commons-dbutils.version}" conf="default->master" />
+    <dependency name="commons-email" org="org.apache.commons"
+        rev="${commons-email.version}" conf="default->master" />
+    <dependency name="commons-fileupload" org="commons-fileupload"
+        rev="${commons-fileupload.version}" conf="default->master" />
+    <dependency name="commons-io" org="commons-io"
+        rev="${commons-io.version}" conf="default->master" />
+    <dependency name="commons-jexl" org="org.apache.commons"
+        rev="${commons-jexl.version}" conf="default->master" />
+    <dependency name="commons-lang" org="commons-lang"
+        rev="${commons-lang.version}" conf="default->master" />
+    <dependency name="commons-logging" org="commons-logging"
+        rev="${commons-logging.version}" conf="default->master" />
+    <dependency name="commons-pool" org="commons-pool" 
+        rev="${commons-pool.version}" conf="default->master" />
+    <dependency name="guava" org="com.google.guava"
+        rev="${guava.version}" conf="default->master" />
+    <dependency name="h2" org="com.h2database" 
+        rev="${h2.version}" conf="default->master" />
+    <dependency name="hadoop-core" org="org.apache.hadoop" 
+        rev="${hadoop-core.version}" conf="default->master" />
+    <dependency name="httpclient" org="org.apache.httpcomponents" 
+        rev="${httpclient.version}" conf="default->master" />
+    <dependency name="httpcore" org="org.apache.httpcomponents" 
+        rev="${httpcore.version}" conf="default->master" />
+    <dependency name="jackson-core-asl" org="org.codehaus.jackson" 
+        rev="${jackson-core.version}" conf="default->master" />
+    <dependency name="jackson-mapper-asl" org="org.codehaus.jackson" 
+        rev="${jackson-mapper.version}" conf="default->master" />
+    <dependency name="jetty" org="org.mortbay.jetty" 
+        rev="${jetty.version}" conf="default->master" />
+    <dependency name="jetty-util" org="org.mortbay.jetty" 
+        rev="${jetty-util.version}" conf="default->master" />
+    <dependency name="joda-time" org="joda-time" 
+        rev="${joda-time.version}" conf="default->master" />
+    <dependency name="jopt-simple" org="net.sf.jopt-simple" 
+        rev="${jopt-simple.version}" conf="default->master" />
+    <dependency name="log4j" org="log4j" 
+        rev="${log4j.version}" conf="default->master" />
+    <dependency name="mail" org="javax.mail" 
+        rev="${mail.version}" conf="default->master" />
+    <dependency name="mysql-connector-java" org="mysql" 
+        rev="${mysql-connector.version}" conf="default->master" />
+    <dependency name="servlet-api" org="javax.servlet" 
+        rev="${servlet-api.version}" conf="default->master" />
+    <dependency name="slf4j-api" org="org.slf4j" 
+        rev="${slf4j-api.version}" conf="default->master" />
+    <dependency name="slf4j-log4j12" org="org.slf4j" 
+        rev="${slf4j-log4j12.version}" conf="default->master" />
+    <dependency name="velocity" org="org.apache.velocity" 
+        rev="${velocity.version}" conf="default->master" />
+    <dependency name="velocity-tools" org="org.apache.velocity" 
+        rev="${velocity-tools.version}" conf="default->master" />
+  </dependencies>
+</ivy-module>

ivy/.gitignore 1(+1 -0)

diff --git a/ivy/.gitignore b/ivy/.gitignore
new file mode 100644
index 0000000..d392f0e
--- /dev/null
+++ b/ivy/.gitignore
@@ -0,0 +1 @@
+*.jar

ivy/ivysettings.xml 27(+27 -0)

diff --git a/ivy/ivysettings.xml b/ivy/ivysettings.xml
new file mode 100644
index 0000000..26bb444
--- /dev/null
+++ b/ivy/ivysettings.xml
@@ -0,0 +1,27 @@
+<ivysettings>
+  <property name="repo.maven.org"
+      value="http://repo1.maven.org/maven2/"
+      override="false"/>
+  <property name="oss.sonatype.org"
+      value="https://oss.sonatype.org/content/groups/public/"
+      override="false"/>
+  <property name="maven2.pattern"
+      value="[organisation]/[module]/[revision]/[module]-[revision]"/>
+  <property name="maven2.pattern.ext"
+      value="${maven2.pattern}.[ext]"/>
+  <settings defaultResolver="default" />
+  <resolvers>
+    <ibiblio name="maven2"
+        root="${repo.maven.org}"
+        pattern="${maven2.pattern.ext}"
+        m2compatible="true" />
+    <ibiblio name="oss-sonatype"
+        root="${oss.sonatype.org}"
+        pattern="${maven2.pattern.ext}"
+        m2compatible="true" />
+    <chain name="default" dual="true">
+      <resolver ref="maven2" />
+      <resolver ref="oss-sonatype" />
+    </chain>
+  </resolvers>
+</ivysettings>
diff --git a/ivy/libraries.properties b/ivy/libraries.properties
new file mode 100644
index 0000000..cb1bf47
--- /dev/null
+++ b/ivy/libraries.properties
@@ -0,0 +1,32 @@
+ivy.version=2.1.0
+
+commons-collections.version=3.2.1
+commons-configuration.version=1.8
+commons-dbutils.version=1.5
+commons-dbcp.version=1.4
+commons-email.version=1.2
+commons-fileupload.version=1.2.1
+commons-io.version=2.4
+commons-jexl.version=2.1.1
+commons-lang.version=2.6
+commons-logging.version=1.1.1
+commons-pool.version=1.6
+guava.version=13.0.1
+h2.version=1.3.170
+hadoop-core.version=1.0.4
+httpclient.version=4.2.1
+httpcore.version=4.2.1
+jackson-core.version=1.9.5
+jackson-mapper.version=1.9.5
+jetty.version=6.1.26
+jetty-util.version=6.1.26
+joda-time.version=2.0
+jopt-simple.version=4.3
+log4j.version=1.2.16
+mail.version=1.4.5
+mysql-connector.version=5.1.28
+servlet-api.version=2.5
+slf4j-api.version=1.6.1
+slf4j-log4j12.version=1.6.4
+velocity.version=1.7
+velocity-tools.version=2.0

unit/build.xml 3(+2 -1)

diff --git a/unit/build.xml b/unit/build.xml
index f0fa718..a13fb6f 100644
--- a/unit/build.xml
+++ b/unit/build.xml
@@ -8,11 +8,12 @@
 	
 	<property name="java.src.dir" value="${base.dir}/unit/java" />
 	<property name="job.conf.dir" value="${base.dir}/unit/executions" />
+  <property name="build.ivy.lib.dir" location="../build/ivy/lib" />
 		
 	<property environment="env" />
 
 	<path id="main.classpath">
-		<fileset dir="../lib">
+    <fileset dir="${build.ivy.lib.dir}">
 			<include name="*.jar" />
 		</fileset>