Subversion Repositories splitter

Rev

Rev 164 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?xml version="1.0"?>
<!--
   File: build.xml
   
   Copyright (C) 2006 Steve Ratcliffe
   
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License version 2 or 3 as
    published by the Free Software Foundation.
   
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
   
   
   Author: Steve Ratcliffe
   Create date: 3 Jan 2008
-->
<project name="splitter" default="dist" basedir=".">

  <!-- Init -->
  <property name="top" value="."/>

  <!--
   This file is not checked into svn, so you can create it and put any
   property definitions that you want to override those below.
 -->
  <property file="${top}/local.properties"/>

  <property name="build" value="build"/>
  <property name="dist" value="dist"/>
  <property name="src" value="src"/>
  <property name="lib" value="lib"/>
  <property name="test" value="test"/>
  <property name="doc" value="doc"/>
  <property name="javadoc" value="${doc}/api"/>
  <property name="resources" value="resources"/>

  <property name="build.classes" value="${build}/classes"/>
  <property name="build.test-classes" value="${build}/test-classes"/>
  <property name="build.test-output" location="${build}/test-output"/>

  <!-- Third party libraries -->
  <property name="xpp.jar" location="${lib}/xpp3-1.1.4c.jar"/>
  <property name="testng.jar" location="${lib}/testng-5.9-jdk15.jar"/>
  <property name="osmbin.jar" location="${lib}/osmpbf.jar"/>
  <property name="fastutil.jar" location="${lib}/fastutil.jar"/>
  <property name="dsiutils.jar" location="${lib}/dsiutils-1.0.11.jar"/>
  <property name="protobuf.jar" location="${lib}/protobuf.jar"/>

  <!-- Classpaths -->
  <path id="classpath">
    <pathelement location="${build.classes}"/>
    <pathelement path="${xpp.jar}"/>
    <pathelement path="${osmbin.jar}"/>
    <pathelement path="${fastutil.jar}"/>
    <pathelement path="${dsiutils.jar}"/>
    <pathelement path="${protobuf.jar}"/>
  </path>

  <path id="test.classpath">
    <path refid="classpath"/>
    <pathelement location="${build.test-classes}"/>
    <pathelement path="${testng.jar}"/>
  </path>

  <!-- Prepare - make all the directories -->
  <target name="prepare">
    <mkdir dir="${build.classes}"/>
    <mkdir dir="${build.test-classes}"/>
    <mkdir dir="${build.test-output}"/>
  </target>

  <target name="compile" depends="prepare" description="main compilation">
    <javac srcdir="${src}" destdir="${build.classes}" debug="yes">
      <include name="**/*.java"/>
      <classpath refid="classpath"/>
    </javac>
  </target>

  <target name="compile.tests" depends="prepare" description="test compilation">
    <javac srcdir="${test}" destdir="${build.test-classes}" debug="yes">
      <include name="**/*.java"/>
      <classpath refid="test.classpath"/>
    </javac>
  </target>

  <target name="javadoc" description="Create the javadoc">
    <mkdir dir="doc"/>
    <javadoc destdir="${javadoc}">
      <fileset dir="${src}" includes="**/*.java"/>
      <classpath refid="classpath"/>
    </javadoc>
  </target>

  <target name="run.tests" depends="compile.tests">
    <!-- Run the java unit tests -->
    <taskdef resource="testngtasks" classpath="${testng.jar}"/>
    <testng classpathref="test.classpath" outputdir="${build.test-output}" haltonfailure="true">
      <classfileset dir="${build.test-classes}">
        <include name="**/*.class"/>
      </classfileset>
    </testng>
  </target>


  <target name="dist" depends="build" description="Make the distribution area">

    <mkdir dir="${dist}"/>
    <mkdir dir="${dist}/doc/api"/>

    <!-- Make the jar -->
    <jar basedir="${build.classes}" jarfile="${dist}/splitter.jar" manifest="resources/MANIFEST.MF">
      <!--<manifest>-->
        <!--<attribute name="Main-Class" value="uk.me.parabola.splitter.Main"/>-->
      <!--</manifest>-->
      <include name="**/*.class"/>
      <include name="*.csv"/>
      <include name="*.properties"/>
      <zipfileset src="${xpp.jar}" includes="**/*.class,META-INF/services/**"/>
    </jar>

    <copy todir="${dist}/doc">
      <fileset dir="doc" includes="*.txt"/>
    </copy>

    <!-- Copy the source code -->
    <copy todir="${dist}/src">
      <fileset dir="${src}"/>
    </copy>
    <copy todir="${dist}/test">
      <fileset dir="${test}"/>
    </copy>
    <copy todir="${dist}/lib">
      <fileset dir="${lib}"/>
    </copy>

    <!-- misc -->
    <copy todir="${dist}">
      <fileset dir="${basedir}">
        <include name="README"/>
        <include name="LICENCE*"/>
        <include name="build.xml"/>
        <include name="external.properties"/>
        <include name="resources/**"/>
      </fileset>
    </copy>
  </target>

  <!-- Clean everything -->
  <target name="clean">
    <delete dir="${build}"/>
  </target>

  <!-- Clobber all generated and built files -->
  <target name="clobber" depends="clean">
    <delete dir="${dist}"/>
  </target>

  <!-- Main -->
  <target name="build" depends="compile">
    <copy todir="${build.classes}">
      <fileset dir="${resources}">
        <include name="*.csv"/>
        <include name="*.properties"/>
        <include name="**/*.trans"/>
      </fileset>
    </copy>
  </target>

  <target name="rebuild" depends="clean, build"/>

</project>