blob: 4f5f2fb2468ab9a60b4b41f4d5ca16125885e297 [file]
<!--
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
-
-->
<project name="AMQ Java" default="build">
<import file="common.xml"/>
<property name="modules.core" value="junit-toolkit common broker client"/>
<property name="modules.examples" value="client/example"/>
<property name="modules.tests" value="systests perftests integrationtests"/>
<property name="modules.management" value="management/eclipse-plugin"/>
<property name="modules.plugin" value="broker-plugins"/>
<property name="modules" value="${modules.core} ${modules.plugin} ${modules.examples} ${modules.tests} ${modules.management}"/>
<property name="qpid.jar" location="${build.lib}/qpid-incubating.jar"/>
<basename property="qpid.jar.name" file="${qpid.jar}"/>
<map property="release.excludes" value="${modules}">
<globmapper from="*" to="*/\*\*"/>
</map>
<property name="release.zip" location="${release}/${project.namever}.zip"/>
<property name="release.tar" location="${release}/${project.namever}.tar"/>
<property name="release.tgz" location="${release}/${project.namever}.tar.gz"/>
<property name="release.bz2" location="${release}/${project.namever}.tar.bz2"/>
<macrodef name="iterate">
<attribute name="target"/>
<attribute name="modules" default="${modules}"/>
<element name="elements" implicit="true" optional="true"/>
<sequential>
<subant target="@{target}" antfile="build.xml">
<filelist dir="." files="@{modules}"/>
<elements/>
</subant>
</sequential>
</macrodef>
<target name="compile" description="compile sources">
<iterate target="compile"/>
</target>
<target name="compile-tests" description="compile unit tests">
<iterate target="compile-tests"/>
</target>
<target name="test" description="execute tests">
<delete file="${build.failed}"/>
<iterate target="test">
<property name="test.failures.ignore" value="true"/>
</iterate>
<condition property="failed">
<available file="${build.failed}"/>
</condition>
<fail if="failed" message="TEST SUITE FAILED"/>
</target>
<target name="jar" description="create module jars">
<iterate target="jar"/>
</target>
<target name="jar-tests" description="create unit test jars">
<iterate target="jar-tests"/>
</target>
<target name="libs" description="copy dependencies into build tree">
<iterate target="libs"/>
</target>
<target name="doc" description="generate api-doc">
<iterate target="doc"/>
</target>
<target name="check-manifest">
<uptodate property="manifest.done" targetfile="${qpid.jar}">
<srcfiles dir="${build.lib}" includes="**/*.jar" excludes="**/${qpid.jar.name}"/>
</uptodate>
</target>
<target name="manifest" depends="check-manifest" unless="manifest.done">
<path id="class.path">
<fileset dir="${build.lib}" >
<include name="*.jar"/>
<exclude name="${qpid.jar.name}"/>
</fileset>
</path>
<pathconvert property="qpid.jar.classpath" pathsep=":" dirsep="/">
<path refid="class.path"/>
<map from="${basedir}" to="lib/"/>
</pathconvert>
<jar destfile="${qpid.jar}">
<manifest>
<attribute name="Class-Path" value="${qpid.jar.classpath}"/>
</manifest>
</jar>
<touch file="${qpid.jar}"/>
</target>
<target name="build" description="build the project">
<iterate target="build"/>
<antcall target="manifest"/>
</target>
<target name="prepare">
<mkdir dir="${release}"/>
</target>
<target name="zip" depends="build,prepare" description="build release archive">
<zip destfile="${release.zip}">
<zipfileset dir="${build}" prefix="${project.namever}" excludes="${release.excludes}"/>
</zip>
</target>
<target name="tar" depends="build,prepare" description="build release archive">
<tar destfile="${release.tar}">
<tarfileset dir="${build}" prefix="${project.namever}" excludes="${release.excludes}"/>
</tar>
</target>
<target name="gzip" depends="tar" description="build release archive">
<gzip src="${release.tar}" destfile="${release.tgz}"/>
</target>
<target name="bzip2" depends="tar" description="build release archive">
<bzip2 src="${release.tar}" destfile="${release.bz2}"/>
</target>
<target name="release" depends="zip,gzip" description="build all release archives except .bz2"/>
<target name="release-all" depends="zip,gzip,bzip2" description="build all release archives"/>
<target name="clean" description="remove build and release artifacts">
<iterate target="clean"/>
<delete dir="${build}"/>
<delete dir="${release}"/>
</target>
</project>