<?xml version="1.0"?>
<!--
OpenAMQ/JMS build file
-->
<project
name = "OpenAMQ/JMS"
default = "jar"
basedir = "."
>
<property name = "version" value = "1.2c1" />
<property name = "lib" value = "${basedir}/lib" />
<property name = "generate.saxon" value = "${lib}/saxon/saxon8.jar" />
<property name = "generate.resources" value = "${basedir}/resources" />
<property name = "generate.spec" value = "${generate.resources}/amqp.0-9.xml" />
<property name = "generate.src" value = "${basedir}/generated/src" />
<property name = "generate.output" value = "${generate.src}/org/openamq/framing" />
<property name = "client.src" value = "${basedir}/src" />
<property name = "client.classes" value = "${basedir}/classes" />
<property name = "tests.src" value = "${basedir}/tests/src" />
<property name = "tests.classes" value = "${basedir}/tests/classes" />
<property name = "dist" value = "${basedir}/dist" />
<property environment = "env" />
<!--
Setup build tree
-->
<target name = "init">
<mkdir dir = "${generate.src}" />
<mkdir dir = "${client.classes}" />
<mkdir dir = "${tests.classes}" />
</target>
<!--
Classpath used to build
-->
<path id = "build.classpath">
<fileset dir = "${lib}">
<include name = "**/*.jar" />
</fileset>
<pathelement path = "${client.classes}" />
<pathelement path = "${tests.classes}" />
</path>
<!--
Clean
-->
<target
name = "clean"
depends = "init"
description = "Clean any generated code and binaries from the build tree"
>
<delete dir = "${basedir}/generated" />
<delete dir = "${client.classes}" />
<delete dir = "${tests.classes}" />
<delete dir = "${dist}" />
</target>
<!--
Generate
-->
<target name = "check-generate">
<uptodate
property = "generate.notRequired"
targetfile = "${generate.output}/results.out"
srcfile = "${generate.spec}"
/>
</target>
<target
name = "generate"
depends = "check-generate"
unless = "generate.notRequired"
description = "Generate framing classes from protocol specification"
>
<mkdir dir = "${generate.src}/org/openamq/client" />
<copy
file = "${generate.resources}/Version.java"
todir = "${generate.src}/org/openamq/client"
/>
<replace
token = "@@version@@"
value = "${version}"
file = "${generate.src}/org/openamq/client/Version.java"
/>
<mkdir dir = "${generate.output}" />
<java jar = "${generate.saxon}" fork = "true">
<arg value = "-o"/>
<arg value = "${generate.output}/results.out" />
<arg value = "${generate.spec}" />
<arg value = "${generate.resources}/framing.xsl" />
<arg value = "asl_base=${asl.base}" />
<arg value = "registry_name=MainRegistry" />
</java>
<java jar = "${generate.saxon}" fork = "true">
<arg value = "-o" />
<arg value = "${generate.output}/registry.out" />
<arg value = "${generate.resources}/registry.template" />
<arg value = "${generate.resources}/registry.xsl" />
</java>
</target>
<!--
Compile
-->
<target
name = "compile"
depends = "init, generate"
description = "Compile client classes"
>
<javac
destdir = "${client.classes}"
target = "1.5"
source = "1.5"
debug = "on"
>
<classpath refid = "build.classpath" />
<src path = "${generate.src}" />
<src path = "${client.src}" />
</javac>
<copy todir = "${client.classes}">
<fileset dir = "${client.src}">
<include name = "log4j.properties" />
<include name = "org/openamq/client/security/DynamicSaslRegistrar.properties" />
<include name = "org/openamq/client/security/CallbackHandlerRegistry.properties" />
</fileset>
</copy>
</target>
<!--
Compile tests
-->
<target
name = "compiletests"
depends = "compile"
description = "Compile test classes"
>
<javac
destdir = "${tests.classes}"
target = "1.5"
source = "1.5"
classpathref = "build.classpath"
debug = "on"
>
<src path = "${tests.src}" />
</javac>
<copy todir = "${tests.classes}">
<fileset dir = "${tests.src}">
<include name = "org/openamq/framing/content.txt" />
</fileset>
</copy>
</target>
<!--
Build JAR archives
-->
<target
name = "jar"
depends = "compiletests"
description = "Build JAR archives in ./dist/"
>
<mkdir dir = "${dist}" />
<manifest file = "${dist}/MANIFEST.MF">
<attribute name = "Built-By" value = "${user.name}" />
<section name = "org.openamq">
<attribute name = "Specification-Title" value = "AMQP" />
<attribute name = "Specification-Version" value = "${version}" />
<attribute name = "Specification-Vendor" value = "AMQP Working Group, http://www.amqp.org/" />
<attribute name = "Implementation-Title" value = "OpenAMQ/JMS" />
<attribute name = "Implementation-Version" value = "${version}" />
<attribute name = "Implementation-Vendor" value = "iMatix Corporation" />
<attribute name = "Implementation-URL" value = "http://www.openamq.org/" />
</section>
</manifest>
<jar
destfile = "${dist}/openamq-jms-${version}.jar"
basedir = "${client.classes}"
manifest = "${dist}/MANIFEST.MF"
/>
<jar
destfile = "${dist}/openamq-jms-tests-${version}.jar"
basedir = "${tests.classes}"
manifest = "${dist}/MANIFEST.MF"
/>
<copy todir = "${dist}">
<fileset dir = "${lib}">
<include name = "**/*.jar" />
</fileset>
</copy>
<path id = "dist.classpath">
<fileset dir = "${dist}">
<include name = "**/*.jar" />
</fileset>
</path>
<manifestclasspath
property = "jar.classpath"
jarfile = "${dist}/openamq-jms-launch.jar"
maxParentLevels = "0"
>
<classpath refid = "dist.classpath" />
</manifestclasspath>
<manifest file = "${dist}/MANIFEST.MF">
<attribute name = "Class-Path" value = "${jar.classpath}" />
<attribute name = "Built-By" value = "${user.name}" />
<section name = "org.openamq">
<attribute name = "Specification-Title" value = "AMQP" />
<attribute name = "Specification-Version" value = "${version}" />
<attribute name = "Specification-Vendor" value = "AMQP Working Group, http://www.amqp.org/" />
<attribute name = "Implementation-Title" value = "OpenAMQ/JMS" />
<attribute name = "Implementation-Version" value = "${version}" />
<attribute name = "Implementation-Vendor" value = "iMatix Corporation" />
<attribute name = "Implementation-URL" value = "http://www.openamq.org/" />
</section>
</manifest>
<jar
destfile = "${dist}/openamq-jms-launch.jar"
manifest = "${dist}/MANIFEST.MF"
/>
</target>
<!--
Install into $IBASE/java/lib
-->
<target
name = "install"
depends = "jar"
if = "env.IBASE"
description = "Install distribution into $IBASE/java/lib"
>
<property name = "install.dir" value = "${env.IBASE}/java/lib" />
<mkdir dir = "${install.dir}" />
<copy todir = "${install.dir}">
<fileset dir = "${dist}">
<include name = "*.jar" />
<include name = "**/*.jar" />
</fileset>
</copy>
</target>
<!--
Build JavaDoc
-->
<target name = "javadoc" depends = "compile, compiletests">
<mkdir dir = "${dist}/doc/api" />
<javadoc
sourcepath = "${client.src}"
destdir = "${dist}/docs/api"
packagenames = "org.openamq.*"
classpathref = "build.classpath"
author = "true"
version = "true"
windowTitle = "OpenAMQ/JMS API"
doctitle = "OpenAMQ/JMS API"
footer = "See <a href="http://www.openamq.org">www.openamq.org</a> for more information."
use = "true"
verbose = "false"
/>
</target>
</project>