blob: a45b97962d7072b27852249bbfa4bd81616d3462 [file] [log] [blame]
<?xml version="1.0" standalone='yes'?>
<project name="Jackson JSON processor" basedir="." default="readme">
<!-- Source directories -->
<property name="dir.src" location="${basedir}/src" />
<property name="dir.src.java.core" location="${dir.src}/java" />
<property name="dir.src.java.mapper" location="${dir.src}/mapper/java" />
<property name="dir.src.java.jaxrs" location="${dir.src}/jaxrs/java" />
<property name="dir.src.java.xc" location="${dir.src}/xc/java" />
<property name="dir.src.java.smile" location="${dir.src}/smile/java" />
<property name="dir.src.java.mrbean" location="${dir.src}/mrbean/java" />
<property name="dir.src.resource.jaxrs" location="${dir.src}/jaxrs/resources" />
<property name="dir.src.maven" location="${dir.src}/maven" />
<property name="dir.src.sample" location="${dir.src}/sample" />
<property name="dir.src.tools" location="${dir.src}/tools" />
<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.jaxrs" location="${dir.build}/classes/jaxrs" />
<property name="dir.build.classes.xc" location="${dir.build}/classes/xc" />
<property name="dir.build.classes.smile" location="${dir.build}/classes/smile" />
<property name="dir.build.classes.mrbean" location="${dir.build}/classes/mrbean" />
<!-- both "sample" and "tools" java code goes under "extra" -->
<property name="dir.build.classes.extra" location="${dir.build}/classes/extra" />
<!-- 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.snapshot" location="${basedir}/build/snapshot" />
<!-- 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_TITLE_JAXRS" value="JAX-RS provider for JSON content type, using Jackson data binding" />
<property name="IMPL_TITLE_XC" value="XML Compatibility extensions for Jackson data binding" />
<property name="IMPL_TITLE_SMILE" value="Jackson Binary format (aka Smile) handling functionality" />
<property name="IMPL_TITLE_MRBEAN" value="Jackson Bean Materializer (aka Mr. Bean)" />
<property name="IMPL_VERSION" value="1.9.8" />
<property name="IMPL_VENDOR" value="http://fasterxml.com" />
<patternset id="dist-all-source-files">
<include name="README.txt" />
<include name="ant/build*.xml" />
<include name="build.xml" />
<include name="release-notes/*" />
<include name="DEV/contributor*" />
<include name="src/**/*.java" />
<include name="src/VERSION.txt" />
<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="ant/build-osgi.xml" />
<import file="ant/build-maven-deploy.xml" />
<import file="ant/build-coverage.xml" />
<import file="ant/build-test.xml" />
<import file="ant/build-mini.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) build - Compile all code, run unit tests" />
<echo message = "4) jars - Compile and create all jars for non-test ${ant.project.name} code" />
<echo message = "5) javadoc - Generate ${ant.project.name} code documentation." />
<echo message = "6) test - Run JUnit tests." />
<echo message = "7) dist - Create distribution directory and copy necessary files there" />
<echo message = "8) all - Run clean, compile, test, javadoc," />
<echo message = " 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.jaxrs}" />
<mkdir dir="${dir.build.classes.xc}" />
<mkdir dir="${dir.build.classes.smile}" />
<mkdir dir="${dir.build.classes.mrbean}" />
<mkdir dir="${dir.build.classes.extra}" />
<!-- make docs directories -->
<mkdir dir="${dir.doc}" />
<mkdir dir="${dir.javadoc}" />
<!-- and finally distribution dir -->
<mkdir dir="${dir.dist}" />
<mkdir dir="${dir.snapshot}" />
<!-- 1.6.0: also add VERSION marker file -->
<copy todir="${dir.build}">
<fileset dir="${dir.src}" includes="VERSION.txt" />
<filterset>
<filter token="VERSION" value="${IMPL_VERSION}" />
</filterset>
</copy>
</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 file="cobertura.ser" />
</target>
<target name="build" depends="compile, all-tests" />
<target name="compile" depends="compile.all" />
<target name="compile.all" depends="
compile.main, test.compile, compile.extra, compile.perf" />
<target name="compile.main"
depends="compile.core, compile.mapper, compile.jaxrs, compile.xc,
compile.smile, compile.mrbean" />
<target name="compile.core" depends="prepare">
<javac srcdir="${dir.src.java.core}" destdir="${dir.build.classes.core}"
source="1.5" target="1.5"
debug="true" includeantruntime="false"
>
<compilerarg value="-Xlint:unchecked" />
<exclude name="**/package-info.java" />
<include name="org/codehaus/**/*.java" />
</javac>
<!-- 1.6, [JACKSON-278]: need to copy VERSION info along (so unit tests see it) -->
<copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.core}/org/codehaus/jackson/impl" />
</target>
<target name="compile.mapper" depends="compile.core">
<javac srcdir="${dir.src.java.mapper}" destdir="${dir.build.classes.mapper}"
source="1.5" target="1.5"
debug="true" includeantruntime="false"
>
<compilerarg value="-Xlint:unchecked" />
<exclude name="**/package-info.java" />
<include name="org/codehaus/jackson/**/*.java" />
<!-- mapper builds on core classes -->
<classpath>
<pathelement path="${dir.build.classes.core}"/>
<!-- We support some ext libs (like Joda time) -->
<fileset dir="${dir.lib}/ext">
<include name="*.jar" />
</fileset>
</classpath>
</javac>
<!-- 1.6, [JACKSON-278]: need to copy VERSION info along (so unit tests see it) -->
<copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.mapper}/org/codehaus/jackson/map" />
</target>
<target name="compile.xc" depends="compile.mapper">
<javac srcdir="${dir.src.java.xc}" destdir="${dir.build.classes.xc}"
source="1.5" target="1.5"
debug="true" includeantruntime="false"
>
<compilerarg value="-Xlint:unchecked" />
<exclude name="**/package-info.java" />
<include name="org/codehaus/jackson/**/*.java" />
<!-- builds on core and mapper classes -->
<classpath>
<pathelement path="${dir.build.classes.core}"/>
<pathelement path="${dir.build.classes.mapper}"/>
<!-- For JDK 1.5 build, need JAXB API -->
<fileset dir="${dir.lib}/jaxb">
<include name="*.jar" />
</fileset>
</classpath>
</javac>
<!-- 1.6, [JACKSON-278]: need to copy VERSION info along (so unit tests see it) -->
<copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.xc}/org/codehaus/jackson/xc" />
<copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.xc}/org/codehaus/jackson/xml" />
</target>
<target name="compile.jaxrs" depends="compile.mapper,compile.xc">
<javac srcdir="${dir.src.java.jaxrs}" destdir="${dir.build.classes.jaxrs}"
source="1.5" target="1.5"
debug="true" includeantruntime="false"
>
<compilerarg value="-Xlint:unchecked" />
<exclude name="**/package-info.java" />
<include name="org/codehaus/jackson/**/*.java" />
<!-- builds on core and mapper classes -->
<classpath>
<fileset dir="${dir.lib}/jaxrs">
<include name="*.jar" />
</fileset>
<pathelement path="${dir.build.classes.core}"/>
<pathelement path="${dir.build.classes.mapper}"/>
<!-- this is optional dependency, but needed for compilation -->
<pathelement path="${dir.build.classes.xc}"/>
</classpath>
</javac>
<!-- 1.6, [JACKSON-278]: need to copy VERSION info along (so unit tests see it) -->
<copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.jaxrs}/org/codehaus/jackson/jaxrs" />
</target>
<target name="compile.smile" depends="compile.core">
<javac srcdir="${dir.src.java.smile}" destdir="${dir.build.classes.smile}"
source="1.5" target="1.5"
debug="true" includeantruntime="false"
>
<compilerarg value="-Xlint:unchecked" />
<exclude name="**/package-info.java" />
<include name="org/codehaus/jackson/smile/**/*.java" />
<!-- builds on core classes -->
<classpath>
<pathelement path="${dir.build.classes.core}"/>
</classpath>
</javac>
<!-- 1.6, [JACKSON-278]: need to copy VERSION info along (so unit tests see it) -->
<copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.smile}/org/codehaus/jackson/smile" />
</target>
<target name="compile.mrbean" depends="compile.core">
<javac srcdir="${dir.src.java.mrbean}" destdir="${dir.build.classes.mrbean}"
source="1.5" target="1.5"
debug="true" includeantruntime="false"
>
<compilerarg value="-Xlint:unchecked" />
<exclude name="**/package-info.java" />
<include name="org/codehaus/jackson/mrbean/**/*.java" />
<!-- builds on core and mapper classes -->
<classpath>
<pathelement path="${dir.build.classes.core}"/>
<pathelement path="${dir.build.classes.mapper}"/>
<fileset dir="${dir.lib}/repackaged">
<include name="jackson-asm*.jar" />
</fileset>
</classpath>
<!-- 1.6, [JACKSON-278]: need to copy VERSION info along (so unit tests see it) -->
</javac>
<copy file="${dir.build}/VERSION.txt" toDir="${dir.build.classes.mrbean}/org/codehaus/jackson/mrbean" />
<!-- also, unpack classes from repackaged asm jar, for OSGi bundle -->
<unjar dest="${dir.build.classes.mrbean}">
<fileset dir="${dir.lib}/repackaged">
<include name="jackson-asm*.jar" />
</fileset>
</unjar>
</target>
<target name="compile.extra" depends="compile.main">
<javac destdir="${dir.build.classes.extra}"
source="1.5" target="1.5"
debug="true" includeantruntime="false"
>
<compilerarg value="-Xlint:unchecked" />
<src path="${dir.src.sample}" />
<src path="${dir.src.tools}" />
<include name="**/*.java" />
<!-- need core and mapper classes -->
<classpath>
<pathelement path="${dir.build.classes.core}"/>
<pathelement path="${dir.build.classes.mapper}"/>
<pathelement path="${dir.build.classes.smile}"/>
</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="true" includeantruntime="false"
>
<classpath>
<fileset dir="${dir.lib}/perf">
<include name="*.jar" />
</fileset>
<pathelement path="${dir.build.classes.core}"/>
<pathelement path="${dir.build.classes.mapper}"/>
<pathelement path="${dir.build.classes.smile}"/>
<pathelement path="${dir.build.classes.xc}"/>
</classpath>
<include name="perf/**/*.java" />
</javac>
</target>
<!-- Dummy target that just includes all individual jars... -->
<target name="jars" depends="jars.asl, jars.lgpl, jars.other, jar.all, jars.tools, jar.mini" />
<target name="javadoc" depends="compile.all">
<!-- Build a dirpath that contains just the "source" tree -->
<javadoc windowtitle="Jackson JSON Processor"
destdir="${dir.javadoc}"
author="true" version="true" use="true">
<classpath>
<fileset dir="${dir.lib}/jaxrs">
<include name="*.jar" />
</fileset>
</classpath>
<packageset dir="${dir.src.java.core}" defaultexcludes="yes">
<include name="org/codehaus/**" />
</packageset>
<packageset dir="${dir.src.java.mapper}" defaultexcludes="yes">
<include name="org/codehaus/**" />
</packageset>
<packageset dir="${dir.src.java.jaxrs}" defaultexcludes="yes">
<include name="org/codehaus/jackson/jaxrs/**" />
</packageset>
<packageset dir="${dir.src.java.xc}" defaultexcludes="yes">
<include name="org/codehaus/jackson/xc/**" />
<include name="org/codehaus/jackson/xml/**" />
</packageset>
<packageset dir="${dir.src.java.smile}" defaultexcludes="yes">
<include name="org/codehaus/jackson/smile/**" />
</packageset>
<packageset dir="${dir.src.java.mrbean}" defaultexcludes="yes">
<include name="org/codehaus/jackson/mrbean/**" />
</packageset>
<!-- External JavaDocs to link: -->
<!-- Joda time... -->
<link href="http://joda-time.sourceforge.net/api-release" />
<!-- Regular JDK 6 classes -->
<link href="http://docs.oracle.com/javase/6/docs/api" />
<!-- And JAX-RS (jsr-311) as well -->
<link href="http://jackson.codehaus.org/javadoc/jax-rs/1.0" />
<group title="Jackson Core" packages="org.codehaus.jackson*" />
<group title="Jackson Mapper"
packages="org.codehaus.jackson.map*:org.codehaus.jackson.node:org.codehaus.jackson.schema"
/>
<group title="Jackson JAX-RS provider" packages="org.codehaus.jackson.jaxrs" />
<group title="Jackson XML Compatibility" packages="org.codehaus.jackson.xc" />
<group title="Jackson Mr Bean" packages="org.codehaus.jackson.mrbean" />
<group title="Jackson Smile Format" packages="org.codehaus.jackson.smile" />
</javadoc>
</target>
<!-- New with 1.6, "jackson-all" combo jar -->
<target name="jar.all" depends="jars.asl, jars.other">
<jar jarfile="${dir.build}/jackson-all-${IMPL_VERSION}.jar"
filesonly="true" index="true" level="9">
<!-- Bah: need Ant 1.8 for this: indexMetaInf="true" -->
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Implementation-Title" value="Jackson"/>
<attribute name="Implementation-Version" value="${IMPL_VERSION}"/>
<attribute name="Implementation-Vendor" value="${IMPL_VENDOR}"/>
<attribute name="Specification-Title" value="${JSON_TITLE}"/>
<attribute name="Specification-Version" value="${JSON_VERSION}"/>
<attribute name="Specification-Vendor" value="${JSON_VENDOR}"/>
</manifest>
<metainf dir="${dir.releasenotes}/asl" includes="*" />
<fileset dir="${dir.build.classes.core}" includes="**/*.class" />
<fileset dir="${dir.build.classes.mapper}" includes="**/*.class" />
<fileset dir="${dir.build.classes.jaxrs}" includes="**/*.class" />
<fileset dir="${dir.build.classes.xc}" includes="**/*.class" />
<fileset dir="${dir.build.classes.smile}" includes="**/*.class" />
<fileset dir="${dir.build.classes.mrbean}" includes="**/*.class" />
</jar>
</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.core}"
includes="org/codehaus/jackson/**"
/>
<jar destfile="${dir.dist}/jackson-mapper-asl-${IMPL_VERSION}-sources.jar"
filesonly="true" compress="true" basedir="${dir.src.java.mapper}"
includes="org/codehaus/jackson/**"
/>
<jar destfile="${dir.dist}/jackson-core-lgpl-${IMPL_VERSION}-sources.jar"
filesonly="true" compress="true" basedir="${dir.src.java.core}"
includes="org/codehaus/jackson/**"
/>
<jar destfile="${dir.dist}/jackson-mapper-lgpl-${IMPL_VERSION}-sources.jar"
filesonly="true" compress="true" basedir="${dir.src.java.mapper}"
includes="org/codehaus/jackson/**"
/>
<jar destfile="${dir.dist}/jackson-jaxrs-${IMPL_VERSION}-sources.jar"
filesonly="true" compress="true" basedir="${dir.src.java.jaxrs}"
includes="org/codehaus/jackson/jaxrs/**"
/>
<jar destfile="${dir.dist}/jackson-xc-${IMPL_VERSION}-sources.jar"
filesonly="true" compress="true" basedir="${dir.src.java.xc}"
includes="org/codehaus/jackson/xc/**"
/>
<jar destfile="${dir.dist}/jackson-smile-${IMPL_VERSION}-sources.jar"
filesonly="true" compress="true" basedir="${dir.src.java.smile}"
includes="org/codehaus/jackson/smile/**"
/>
<jar destfile="${dir.dist}/jackson-mrbean-${IMPL_VERSION}-sources.jar"
filesonly="true" compress="true" basedir="${dir.src.java.mrbean}"
includes="org/codehaus/jackson/mrbean/**"
/>
<!-- Similarly package javadocs; sub-optimal since they are built just
once so there's plenty of replication. So let's actually
only do this for core and mapper, for now:
-->
<jar destfile="${dir.dist}/jackson-core-asl-${IMPL_VERSION}-javadoc.jar"
filesonly="true" compress="true" basedir="${dir.javadoc}" includes="**/*"
/>
<jar destfile="${dir.dist}/jackson-mapper-asl-${IMPL_VERSION}-javadoc.jar"
filesonly="true" compress="true" basedir="${dir.javadoc}" includes="**/*"
/>
<!-- 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>
<!-- 12-Jun-2009, tatu: Trying to make Maven snapshots work...
-->
<copy todir="${dir.snapshot}">
<fileset dir="${dir.src}/maven" includes="*.pom" />
<globmapper from="*.pom" to="*-${IMPL_VERSION}-SNAPSHOT.pom" />
<filterset>
<filter token="VERSION" value="${IMPL_VERSION}-SNAPSHOT" />
</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.dist}" includes="*.pom" />
<fileset dir="${dir.snapshot}" includes="*.pom" />
</xmlvalidate>
</target>
<target name="all" depends="clean,javadoc,test,dist">
<!-- This target simply depends on others to do its job -->
</target>
</project>