Revision 7d77574c1b4d1ceaebe50fa7499d4a294620101c authored by Bhupesh Bansal on 13 January 2009, 19:36:08 UTC, committed by Bhupesh Bansal on 13 January 2009, 19:36:08 UTC
1 parent b373eaa
Raw File
build.xml
<?xml version="1.0"?>

<project name="voldemort" basedir="." default="all">
  <property file="build.properties"/>

  <property name="name" value="voldemort"/>
  <property name="display.name" value="Voldemort"/>
  <property name="author" value="Jay Kreps"/>

  <path id="main-classpath">
    <fileset dir="${lib.dir}">
      <include name="*.jar"/>
    </fileset>
    <pathelement path="${classes.dir}"/>
  </path>

  <path id="test-classpath">
    <path refid="main-classpath"/>
    <pathelement path="${testclasses.dir}"/>
  </path>

  <macrodef name="replace-dir">
    <attribute name="dir"/>
    <sequential>
      <delete dir="@{dir}"/>
      <mkdir dir="@{dir}"/>
    </sequential>
  </macrodef>

  <target name="all" depends="clean, jar, war, test" description="Build all artifacts." />

  <target name="usage">
    <echo message=""/>
    <echo message="${name} build file"/>
    <echo message="-----------------------------------"/>
    <echo message=""/>
    <echo message="Available targets are:"/>
    <echo message=""/>
    <echo message="build -- Build the application"/>
    <echo message="client -- Build a jar file for clients to use"/>
    <echo message="jar -- Build a jar file for the client."/>
    <echo message="war -- Build a war file for deploying the server to a servlet container"/>
    <echo message="docs -- Create html documentation"/>
    <echo message="clean -- Delete generated files"/>
    <echo message=""/>
  </target>

  <target name="clean" description="Delete generated files.">
    <delete dir="${dist.dir}" />
    <replace-dir dir="${javadoc.dir}"/>
  </target>

  <target name="build" description="Compile main source tree java files">
    <replace-dir dir="${classes.dir}"/>
    <!-- copy non-java files to classes dir to load from classpath -->
    <copy todir="${classes.dir}">
      <fileset dir="${java.dir}">
        <exclude name="**/*.java"/>
      </fileset>
    </copy>
    <javac destdir="${classes.dir}" target="1.5" debug="true" deprecation="true" failonerror="true">
      <src path="${java.dir}"/>
      <classpath refid="main-classpath"/>
    </javac>
    <buildnumber file="build_number.txt"/>
  </target>

  <target name="test" depends="build, buildtest" description="Build test jar file">
    <jar destfile="${dist.dir}/${name}-test.jar">
      <fileset dir="${testclasses.dir}"/>
    </jar>
  </target>

  <target name="jar" depends="build" description="Build server jar file">
    <jar destfile="${dist.dir}/${name}.jar">
      <fileset dir="${classes.dir}">
        <include name="**/*.*"/>
      </fileset>
      <!-- include src code for ide convenience -->
      <fileset dir="${java.dir}" />
    </jar>
  </target>
  
  <target name="utils" depends="build" description="Build a jar file with voldemort util classes.">
    <tstamp>
      <format property="TODAY" pattern="yyyy-MM-dd" locale="en,US"/>
    </tstamp>
    <jar destfile="${dist.dir}/${name}-utils-${TODAY}.jar">
      <fileset dir="${classes.dir}">
        <include name="voldemort/VoldemortException.class"/>
        <include name="voldemort/Serializer.class"/>
        <include name="voldemort/serialization/SerializationException.class"/>
        <include name="voldemort/serialization/json/*"/>
        <include name="voldemort/utils/*"/>
      </fileset>
    </jar>
  </target>

  <target name="buildtest" description="Compile test classes">
    <replace-dir dir="${testclasses.dir}"/>
    <javac destdir="${testclasses.dir}" target="1.5" debug="true" deprecation="true" failonerror="true">
      <src path="${unittestsrc.dir}"/>
      <src path="${inttestsrc.dir}"/>
      <src path="${commontestsrc.dir}"/>
      <classpath refid="main-classpath"/>
    </javac>
  </target>

  <target name="junit" depends="build, buildtest" description="Run junit tests.">
    <replace-dir dir="${testreport.dir}"/>
    <replace-dir dir="${testhtml.dir}"/>
    <junit printsummary="yes" showoutput="true">
      <classpath refid="test-classpath"/>
      <formatter type="xml"/>
      <batchtest fork="yes" todir="${testreport.dir}">
        <fileset dir="${unittestsrc.dir}">
          <include name="**/*Test.java"/>
        </fileset>
      </batchtest>
    </junit>
    <junitreport todir="${testhtml.dir}">
      <fileset dir="${testreport.dir}">
        <include name="TEST-*.xml"/>
      </fileset>
      <report todir="${testhtml.dir}" styledir="junitreport" format="frames" />
    </junitreport>
  </target>

  <target name="war" depends="build" description="Build server war file">
    <war destfile="${dist.dir}/${name}.war" webxml="web.xml" basedir="${classes.dir}">
      <classes dir="${classes.dir}"/>
      <lib dir="${lib.dir}">
        <exclude name="${lib.dir}/servlet-api.jar"/>
        <exclude name="${lib.dir}/src/**"/>
      </lib>
    </war>
  </target>

  <target name="docs" description="Create complete Javadoc documentation">
    <replace-dir dir="${javadoc.dir}"/>
    <javadoc sourcepath="${java.dir}" destdir="${javadoc.dir}" windowtitle="${display.name}"
                 source="1.5" author="true" version="true" use="true" packagenames="*">
      <doctitle>${display.name}</doctitle>
      <bottom>${author}</bottom>
      <classpath refid="main-classpath"/>
    </javadoc>
  </target>

  <target name="redeploy" depends="war, deploy">
  </target>

  <taskdef file="tomcat-tasks.properties">
    <classpath>
      <path location="${lib.dir}/catalina-ant.jar"/>
    </classpath>
  </taskdef>

  <target name="list" description="List Tomcat applications">
    <list url="${tomcat.manager.url}"
                 username="${tomcat.manager.username}"
                 password="${tomcat.manager.password}"/>
  </target>

  <target name="deploy" description="Deploy application" depends="war">
    <deploy url="${tomcat.manager.url}"
                 username="${tomcat.manager.username}"
                 password="${tomcat.manager.password}"
                 path="${tomcat.context}"
                 update="true"
                 war="file:${dist.dir}/${name}.war"/>
  </target>

  <target name="undeploy" description="Undeploy application">
    <undeploy url="${tomcat.manager.url}"
                 username="${tomcat.manager.username}"
                 password="${tomcat.manager.password}"
                 path="${tomcat.context}"/>
  </target>

</project>
back to top