blob: 1adb2dd84ad9e84a173c5cae0d3f55a893a1fcc9 [file] [log] [blame]
<?xml version="1.0" standalone='yes'?>
<project name="Jackson JSON parser" basedir="." default="readme">
<!-- Source directories -->
<property name="dir.src" location="${basedir}/src" />
<property name="dir.src.java" location="${dir.src}/java" />
<property name="dir.src.test" location="${dir.src}/test" />
<property name="dir.src.sample" location="${dir.src}/sample" />
<property name="dir.releasenotes" location="${basedir}/release-notes" />
<!-- Libs -->
<property name="dir.lib" location="${basedir}/lib" />
<!-- Build-related -->
<property name="dir.build" location="${basedir}/build" />
<property name="dir.build.classes.core" location="${dir.build}/classes/core" />
<property name="dir.build.classes.mapper" location="${dir.build}/classes/mapper" />
<property name="dir.build.classes.extra" location="${dir.build}/classes/extra" />
<!-- some support for perf testing -->
<property name="dir.build.classes.perf" location="${dir.build}/classes/perf" />
<!-- Test suite -->
<property name="dir.test" location="${basedir}/test" />
<property name="dir.test.classes" location="${dir.test}/classes" />
<property name="dir.test.results" location="${dir.test}/results" />
<property name="dir.test.xmlresults" location="${dir.test.results}/xml" />
<!-- Documentation -->
<property name="dir.doc" location="${basedir}/doc" />
<property name="dir.javadoc" location="${dir.build}/javadoc" />
<!-- Distribution -->
<property name="dir.dist" location="${basedir}/dist" />
<property name="dir.dist.maven2" location="${basedir}/dist-maven2" />
<!-- Version information -->
<!-- Version -->
<property name="JSON_TITLE" value="Json - JavaScript Object Notation" />
<property name="JSON_VERSION" value="1.0" />
<property name="JSON_VENDOR" value="http://www.ietf.org/rfc/rfc4627.txt" />
<property name="IMPL_TITLE_CORE" value="Jackson JSON processor" />
<property name="IMPL_TITLE_MAPPER" value="Data mapper for Jackson JSON processor" />
<property name="IMPL_VERSION" value="0.9.8-SNAPSHOT" />
<property name="IMPL_VENDOR" value="http://fasterxml.com" />
<path id="junit-libs">
<fileset dir="${dir.lib}">
<include name="junit/junit*.jar" />
</fileset>
</path>
<patternset id="dist-all-source-files">
<include name="README.txt" />
<include name="build.xml" />
<include name="release-notes/*" />
<include name="DEV/contributor*" />
<include name="src/**/*.java" />
<include name="src/java/**/*.html" />
<include name="src/maven/*.pom" />
<include name="release-notes/*" />
<include name="release-notes/asl/*" />
<include name="release-notes/lgpl/*" />
<!-- need jars for auxiliary tasks (tests), although jackson
itself does not depend on any other packages, just JDK 1.5
-->
<include name="lib/**/*.jar" />
<include name="samples/**/*.jsn" />
</patternset>
<!-- some build tasks are refactored out of the main task -->
<import file="build-osgi.xml" />
<import file="build-coverage.xml" />
<!--*********************************************************************-->
<!-- The readme target shows a brief description of all targets -->
<!-- supported by this ant build file -->
<!--*********************************************************************-->
<target name="readme">
<echo message = "${ant.project.name}'s Available Targets" />
<echo message = "---------------------------------------------------" />
<echo message = "1) readme - Displays this information (default target)." />
<echo message = "2) clean - Remove any generated files/directories." />
<echo message = "3) compile.all - Compile all code for ${ant.project.name}." />
<echo message = "4) jars - Compile and create all jars for non-test ${ant.project.name} code (see below for specific ones)." />
<echo message = "4b) jar.asl - Compile and create jar for non-test ${ant.project.name} cod, under Apache (2.0) license." />
<echo message = "5) javadoc - Generate ${ant.project.name} code documentation." />
<echo message = "6) compile.test - Compile ${ant.project.name} code and test code" />
<echo message = " for JUnit tests." />
<echo message = "7) test - Run JUnit tests." />
<echo message = "8) dist - Create distribution directory and copy necessary files there" />
<echo message = "9) all - Run the clean, compile, javadoc," />
<echo message = " test and dist targets." />
<echo message = "" />
<echo message = "Available command-line arguments:" />
<echo message = "---------------------------------" />
<echo message = "none" />
</target>
<target name="prepare">
<!-- make build directories -->
<mkdir dir="${dir.build}" />
<mkdir dir="${dir.build.classes.core}" />
<mkdir dir="${dir.build.classes.mapper}" />
<mkdir dir="${dir.build.classes.extra}" />
<!-- make docs directories -->
<mkdir dir="${dir.doc}" />
<mkdir dir="${dir.javadoc}" />
<!-- make test output directories -->
<mkdir dir="${dir.test}" />
<mkdir dir="${dir.test.classes}" />
<mkdir dir="${dir.test.results}" />
<mkdir dir="${dir.test.xmlresults}" />
<!-- and finally distribution dir -->
<mkdir dir="${dir.dist}" />
</target>
<!-- ***********************************************
- supporting dummy tasks
- ***********************************************-->
<!-- ***********************************************
- clean - Removes all generated files/directories
- ***********************************************-->
<target name="clean">
<delete dir="${dir.build}"/>
<delete dir="${dir.doc}"/>
<delete dir="${dir.test}"/>
<delete dir="${dir.dist}"/>
<delete dir="${dir.dist.maven2}"/>
<delete file="cobertura.ser" />
</target>
<target name="compile" depends="compile.all" />
<target name="compile.all" depends="compile.main, compile.extra, compile.test" /> <!--, compile.perf" /> -->
<target name="compile.main" depends="compile.core, compile.mapper" />
<target name="compile.core" depends="prepare">
<javac srcdir="${dir.src.java}" destdir="${dir.build.classes.core}"
source="1.5" target="1.5"
debug="true"
>
<compilerarg value="-Xlint:unchecked" />
<exclude name="org/codehaus/jackson/map/**/*.java" />
<include name="org/codehaus/**/*.java" />
</javac>
</target>
<target name="compile.mapper" depends="compile.core">
<javac srcdir="${dir.src.java}" destdir="${dir.build.classes.mapper}"
source="1.5" target="1.5"
debug="true"
>
<compilerarg value="-Xlint:unchecked" />
<include name="org/codehaus/jackson/map/**/*.java" />
<!-- mapper builds on core classes -->
<classpath>
<pathelement path="${dir.build.classes.core}"/>
</classpath>
</javac>
</target>
<target name="compile.extra" depends="compile.main">
<javac destdir="${dir.build.classes.extra}"
source="1.5" target="1.5" debug="true"
>
<compilerarg value="-Xlint:unchecked" />
<src path="${dir.src.sample}" />
<src path="${dir.src.java}/test" />
<include name="**/*.java" />
<!-- need core and mapper classes -->
<classpath>
<pathelement path="${dir.build.classes.core}"/>
<pathelement path="${dir.build.classes.mapper}"/>
</classpath>
</javac>
</target>
<target name="compile.perf" depends="compile.main">
<mkdir dir="${dir.build.classes.perf}" />
<!-- Let's also compile micro-benchmarks... -->
<javac srcdir="${dir.src}/perf" destdir="${dir.build.classes.perf}" debug="false"
>
<classpath>
<fileset dir="${dir.lib}/perf">
<include name="*.jar" />
</fileset>
<pathelement path="${dir.build.classes.core}"/>
<pathelement path="${dir.build.classes.mapper}"/>
</classpath>
<include name="**/*.java" />
</javac>
</target>
<!-- Dummy target that just includes all individual jars... -->
<target name="jars"
depends="jars.asl, jars.lgpl"
/>
<target name="javadoc" depends="prepare">
<!-- Build a dirpath that contains just the "source" tree -->
<javadoc windowtitle="Jackson JSON Processor"
destdir="${dir.javadoc}"
author="true"
version="true">
<packageset dir="${dir.src.java}" defaultexcludes="yes">
<include name="org/codehaus/**" />
</packageset>
</javadoc>
</target>
<!-- Generic distribution target builds the structure we copy over
to the website.
-->
<target name="dist" depends="compile.all ,jars, javadoc"
>
<!-- First, let's copy the binary jars to dist -->
<copy todir="${dir.dist}">
<fileset dir="${dir.build}" includes="*.jar" />
</copy>
<!-- Then let's create the source distribution tar packages
-->
<!-- Need to first copy to a tmp dir, to get the additional
directory (so tar/zip contents won't explode directly
in current dir)
-->
<property name="DIST_FILENAME" value="jackson-src-${IMPL_VERSION}" />
<property name="DIST_DIR" value="${DIST_FILENAME}" />
<!-- better always clean it up, if it exists... -->
<delete dir="${dir.build}/${DIST_DIR}" />
<mkdir dir="${dir.build}/${DIST_DIR}" />
<copy todir="${dir.build}/${DIST_DIR}">
<fileset dir="${basedir}">
<patternset refid="dist-all-source-files" />
</fileset>
</copy>
<!-- then create tarball, zip -->
<tar basedir="${dir.build}"
includes="${DIST_DIR}/**"
destfile="${dir.dist}/${DIST_FILENAME}.tar.gz"
compression="gzip"
/>
<zip basedir="${dir.build}"
includes="${DIST_DIR}/**"
destfile="${dir.dist}/${DIST_FILENAME}.zip"
/>
<!-- And create source jars for IDE support; separate for core, mapper
and both license types
-->
<jar destfile="${dir.dist}/jackson-core-asl-${IMPL_VERSION}-sources.jar"
filesonly="true" compress="true" basedir="${dir.src.java}"
excludes="org/codehaus/jackson/map/**"
includes="org/codehaus/jackson/**"
/>
<jar destfile="${dir.dist}/jackson-mapper-asl-${IMPL_VERSION}-sources.jar"
filesonly="true" compress="true" basedir="${dir.src.java}"
includes="org/codehaus/jackson/map/**"
/>
<jar destfile="${dir.dist}/jackson-core-lgpl-${IMPL_VERSION}-sources.jar"
filesonly="true" compress="true" basedir="${dir.src.java}"
excludes="org/codehaus/jackson/map/**"
includes="org/codehaus/jackson/**"
/>
<jar destfile="${dir.dist}/jackson-mapper-lgpl-${IMPL_VERSION}-sources.jar"
filesonly="true" compress="true" basedir="${dir.src.java}"
includes="org/codehaus/jackson/map/**"
/>
<!-- Then copy javadocs -->
<copy todir="${dir.dist}">
<fileset dir="${dir.javadoc}/.." includes="javadoc/**/*" />
</copy>
<!-- Plus, let's also just copy README and compatibility files, in
addition to being included in source package
-->
<copy todir="${dir.dist}" >
<fileset dir="." includes="release-notes/*" />
<fileset dir="." includes="release-notes/asl/*" />
<fileset dir="." includes="release-notes/lgpl/*" />
</copy>
<!-- And also additional Maven stuff -->
<copy todir="${dir.dist}">
<fileset dir="${dir.src}/maven" includes="*.pom" />
<globmapper from="*.pom" to="*-${IMPL_VERSION}.pom" />
<filterset>
<filter token="VERSION" value="${IMPL_VERSION}" />
</filterset>
</copy>
<!-- 03-Dec-2008, tatu: Let's validate well-formedness of
resulting files (to avoid things like [JACKSON-25])
-->
<xmlvalidate lenient="true">
<!-- lenient: check only well-formedness, no dtd/schema (yet) -->
<fileset dir="${dir.src}/maven" includes="*.pom" />
</xmlvalidate>
</target>
<!-- And for Maven2 repo, we will construct set of different
directories
-->
<target name="dist.maven" depends="dist">
<mkdir dir="${dir.dist.maven2}"/>
<mkdir dir="${dir.dist.maven2}/jackson-core-asl/${IMPL_VERSION}"/>
<copy todir="${dir.dist.maven2}/jackson-core-asl/${IMPL_VERSION}">
<fileset dir="${dir.dist}" includes="jackson-core-asl*" />
</copy>
<mkdir dir="${dir.dist.maven2}/jackson-mapper-asl/${IMPL_VERSION}"/>
<copy todir="${dir.dist.maven2}/jackson-mapper-asl/${IMPL_VERSION}">
<fileset dir="${dir.dist}" includes="jackson-mapper-asl*" />
</copy>
<mkdir dir="${dir.dist.maven2}/jackson-core-lgpl/${IMPL_VERSION}"/>
<copy todir="${dir.dist.maven2}/jackson-core-lgpl/${IMPL_VERSION}">
<fileset dir="${dir.dist}" includes="jackson-core-lgpl*" />
</copy>
<mkdir dir="${dir.dist.maven2}/jackson-mapper-lgpl/${IMPL_VERSION}"/>
<copy todir="${dir.dist.maven2}/jackson-mapper-lgpl/${IMPL_VERSION}">
<fileset dir="${dir.dist}" includes="jackson-mapper-lgpl*" />
</copy>
</target>
<target name="all" depends="clean,javadoc,test,dist">
<!-- This target simply depends on others to do its job -->
</target>
<!--*********************************************************************-->
<!-- Tasks from here down are in support of junit tests. -->
<!--*********************************************************************-->
<target name="all-tests" depends="test" />
<!-- Compiling and running test cases
-->
<target name="compile.test" depends="compile.main">
<javac srcdir="${dir.src.test}" destdir="${dir.test.classes}"
source="1.5" target="1.5"
debug="true"
>
<include name="**/*.java" />
<classpath>
<pathelement path="${dir.build.classes.core}"/>
<pathelement path="${dir.build.classes.mapper}"/>
<path refid="junit-libs"/>
</classpath>
</javac>
</target>
<target name="test" depends="compile.test">
<!-- showoutput 'yes' to allow outputting debug msgs... -->
<junit fork="no" printsummary="yes" haltonfailure="no"
showoutput="yes">
<batchtest fork="no" todir="${dir.test.xmlresults}">
<fileset dir="${dir.test.classes}">
<!-- Need to exclude inner classes... -->
<exclude name="**/*$*.class"/>
<!-- And manual non-junit test classes -->
<exclude name="test/*.class"/>
<include name="**/Test*.class"/>
</fileset>
</batchtest>
<formatter type="xml" />
<classpath>
<pathelement path="${dir.build.classes.core}" />
<pathelement path="${dir.build.classes.mapper}" />
<pathelement location="${dir.test.classes}" />
<path refid="junit-libs"/>
</classpath>
</junit>
<junitreport todir="${dir.test.results}">
<fileset dir="${dir.test.xmlresults}">
<include name="TEST-*.xml" />
</fileset>
<report todir="${dir.test.results}" />
</junitreport>
</target>
</project>