summaryrefslogtreecommitdiff
path: root/java/java/build.xml
diff options
context:
space:
mode:
Diffstat (limited to 'java/java/build.xml')
-rw-r--r--java/java/build.xml324
1 files changed, 324 insertions, 0 deletions
diff --git a/java/java/build.xml b/java/java/build.xml
new file mode 100644
index 0000000000..2419c7599c
--- /dev/null
+++ b/java/java/build.xml
@@ -0,0 +1,324 @@
+<!--
+ -
+ - 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 file="build.properties"/>
+ <property name="modules.extra" value=""/>
+ <property name="modules.client" value="common,client"/>
+ <property name="modules"
+ value="${modules.client},broker,broker/test,client/test,cluster,systests,${modules.extra}"/>
+
+ <property name="release.fullversion" value="${build.release.version}-${build.release.name}-${build.release.tag}"/>
+
+ <macrodef name="iterate">
+ <attribute name="target"/>
+ <attribute name="modules" default="${modules}"/>
+ <element name="elements" implicit="true" optional="true"/>
+ <sequential>
+ <subant target="@{target}" antfile="build-module.xml">
+ <filelist dir="." files="@{modules}"/>
+ <elements/>
+ </subant>
+ </sequential>
+ </macrodef>
+
+ <target name="build" description="compile java source code for each module">
+ <iterate target="build"/>
+ </target>
+
+ <target name="test" description="execute unit tests">
+ <iterate target="test"/>
+ </target>
+
+ <target name="testreport" description="execute unit tests and produce reports">
+ <iterate target="testreport"/>
+ </target>
+
+ <target name="doc" description="produce javadoc for each module">
+ <iterate target="doc"/>
+ </target>
+
+ <target name="jar"
+ description="create java class file archives for each module">
+ <iterate target="jar"/>
+ </target>
+
+ <target name="dist"
+ description="copy each module's files into a single distribution tree">
+ <iterate target="dist"/>
+ <iterate target="dist-lib" modules="${modules.client}">
+ <property name="dist.dir" value="${dist.client.dir}"/>
+ </iterate>
+ </target>
+
+ <target name="clean" description="remove all build artifacts">
+ <iterate target="clean"/>
+ <delete dir="${build.dir}"/>
+ <delete dir="${release.dir}"/>
+ </target>
+
+ <property name="client.includes" value="*/client/**"/>
+
+ <target name="zip" depends="dist"
+ description="produce a zip archive of the distribution tree">
+ <zip basedir="${dist.root}" destfile="${build.zip}"/>
+ <zip basedir="${dist.root}" destfile="${client.zip}"
+ includes="${client.includes}"/>
+ </target>
+
+ <target name="tar" depends="dist"
+ description="produce a tar archive of the distribution tree">
+ <tar basedir="${dist.root}" destfile="${build.tar}"/>
+ <tar basedir="${dist.root}" destfile="${client.tar}"
+ includes="${client.includes}"/>
+ </target>
+
+ <target name="gzip" depends="tar"
+ description="produce a gzipped tarball of the distribution tree">
+ <gzip src="${build.tar}" destfile="${build.tgz}"/>
+ <gzip src="${client.tar}" destfile="${client.tgz}"/>
+ </target>
+
+ <target name="bzip2" depends="tar"
+ description="produze a bzipped tarball of the distribution tree">
+ <bzip2 src="${build.tar}" destfile="${build.bz2}"/>
+ <bzip2 src="${client.tar}" destfile="${client.bz2}"/>
+ </target>
+
+ <target name="archive" depends="zip,gzip,bzip2"
+ description="produce all archive formats of the distribution tree"/>
+
+ <target name="preparerelease">
+ <mkdir dir="${release.dir}"/>
+ </target>
+
+ <target name="copymodule">
+ <copy todir="${build.release.prepare}/src/java">
+ <fileset dir="${project.root}">
+ <!-- Module src -->
+ <include name="${module}/${bin.dir}/**"/>
+ <include name="${module}/${src.dir}/**"/>
+ <include name="${module}/${lib.dir}/**"/>
+ <include name="${module}/${etc.dir}/**"/>
+ <include name="${module}/${test.dir}/**"/>
+ <include name="${module}/${module.build.file}"/>
+ </fileset>
+ </copy>
+ </target>
+
+ <target name="preparereleasesrc" depends="preparerelease">
+
+ <!-- Copy Source to prepare directory -->
+ <mkdir dir="${build.release.prepare}/src/java"/>
+
+ <antcall target="copymodule">
+ <param name="module" value="broker"/>
+ </antcall>
+
+ <antcall target="copymodule">
+ <param name="module" value="client"/>
+ </antcall>
+
+ <antcall target="copymodule">
+ <param name="module" value="common"/>
+ </antcall>
+
+ <antcall target="copymodule">
+ <param name="module" value="cluster"/>
+ </antcall>
+
+ <copy todir="${build.release.prepare}/src/java">
+ <fileset dir="${project.root}">
+ <include name="${tasks.dir}/${src.dir}/**"/>
+ <include name="${doc.dir}/**"/>
+ </fileset>
+ </copy>
+
+ <copy todir="${build.release.prepare}/src/java">
+ <fileset dir="${project.root}">
+ <!-- Module src -->
+ <!-- Extra Common files -->
+ <include name="${common.dir}/${stylesheets.dir}/**"/>
+ <include name="${common.dir}/${resources.dir}/**"/>
+
+ <!-- Root build Files -->
+ <include name="${build.file}"/>
+ <include name="${common.file}"/>
+ <include name="${module.file}"/>
+ <include name="${build.properties.file}"/>
+
+ </fileset>
+ </copy>
+
+ <!-- Copy Spec files for protocol generation -->
+ <copy todir="${build.release.prepare}/src/">
+ <fileset dir=".." casesensitive="false">
+ <include name="${specs.dir}/**"/>
+ </fileset>
+ </copy>
+
+ <antcall target="copyreleasedocs">
+ <param name="todir" value="${build.release.prepare}"/>
+ </antcall>
+
+ </target>
+
+ <target name="copyreleasedocs">
+ <!-- Copy Various Txt files to prepare directory -->
+ <copy todir="${todir}">
+ <fileset dir="release-docs">
+ <include name="RELEASE_NOTES.txt"/>
+ </fileset>
+ <fileset dir="${project.root}">
+ <include name="README.txt"/>
+ <include name="NOTICE.txt"/>
+ </fileset>
+ </copy>
+
+ <antcall target="createLicense">
+ <param name="fromdir" value="${todir}"/>
+ <param name="destdir" value="${todir}"/>
+ </antcall>
+
+ </target>
+
+ <target name="createLicense">
+
+ <!-- Copy our main License file-->
+ <copy file="LICENSE.txt" todir="${destdir}"/>
+
+ <!-- Find all the license files-->
+ <fileset dir="${fromdir}" id="license.files">
+ <include name="**/${lib.dir}/**/license*"/>
+ </fileset>
+
+ <!-- Path to use to remove from the start of the license file name -->
+ <path path="${todir}${file.separator}" id="release.prepare.dir.id" />
+
+ <!-- Convert this path to use the platform file separator \ or / -->
+ <pathconvert refid="release.prepare.dir.id" property="release.prepare.path" dirsep="${file.separator}"/>
+
+ <!-- For each of the license files remove the release prepare path-->
+ <pathconvert refid="license.files" id="licenses.convert.path.id" property="licenses.convert" pathsep="${line.separator}" >
+ <map from="${release.prepare.path}${file.separator}" to=''/>
+ </pathconvert>
+
+
+ <!-- Add the list of licence files to the end of the main license file.-->
+ <echo file="${destdir}/LICENSE.txt" append="yes">
+ ${line.separator}Additional license files can be found here:${line.separator}${licenses.convert}
+ </echo>
+
+ </target>
+
+ <target name="tgzandzip">
+ <tar compression="gzip" longfile="gnu"
+ destfile="${file}.tar.gz">
+ <tarfileset dir="${source}" mode="755" username="ant" group="ant">
+ <include name="**"/>
+ </tarfileset>
+ </tar>
+
+ <zip destfile="${file}.zip">
+ <zipfileset dir="${source}">
+ <include name="**"/>
+ </zipfileset>
+ </zip>
+ </target>
+
+ <target name="std-src-release" depends="preparereleasesrc">
+
+ <antcall target="tgzandzip">
+ <param name="file" value="${release.dir}/${project.name}-java-${release.fullversion}-src"/>
+ <param name="source" value="${build.release.prepare}"/>
+ </antcall>
+
+ </target>
+
+ <target name="std-bin-release" depends="preparerelease">
+
+ <antcall target="std-bin-release-item">
+ <param name="module.content" value="client-server"/>
+ </antcall>
+
+ <antcall target="std-bin-release-item">
+ <param name="module.content" value="client"/>
+ <param name="modules.include" value="${modules.client}"/>
+ <param name="release.libsonly" value=""/>
+ </antcall>
+
+ </target>
+
+ <!-- incoming params
+ module.content i.e. client or client-server
+ modules.include i.e. ${modules.client}
+ release.libsonly determines what task to run on the iterate normally dist but if libs only then dist-lib
+ -->
+ <target name="std-bin-release-item" depends="preparerelease">
+
+ <property name="release.client.bin.dir" value="${build.release}/${project.name}-java-${release.fullversion}-client"/>
+
+ <!-- if modules.include has not been set set it to all modules-->
+ <property name="modules.include" value="${modules}"/>
+
+ <!-- Set the type of dist to do. Normally it is dist but if we are doing a libs only then set dist-lib -->
+ <condition property="disttype" value="dist-lib" else="dist">
+ <isset property="release.libsonly"/>
+ </condition>
+
+ <!-- If the module content has been specified then use then set that value-->
+ <condition property="module.content.suffix" value="-${module.content}" else="">
+ <isset property="module.content"/>
+ </condition>
+
+ <!-- Setup the local variables -->
+ <property name="release.name" value="${project.name}-java-${release.fullversion}${module.content.suffix}"/>
+ <property name="release.bin.dir" value="${build.release}/${release.name}"/>
+ <property name="module.jar.prefix" value="${project.name}-"/>
+ <property name="module.jar.suffix" value="-${release.fullversion}${module.content.suffix}"/>
+
+ <mkdir dir="${release.bin.dir}"/>
+
+ <iterate target="${disttype}" modules="${modules.include}" >
+ <property name="module.prefix" value="${module.jar.prefix}"/>
+ <property name="module.suffix" value="${module.jar.suffix}"/>
+ <property name="dist.dest.dir" value="${release.bin.dir}"/>
+ </iterate>
+
+ <antcall target="copyreleasedocs">
+ <param name="todir" value="${release.bin.dir}"/>
+ </antcall>
+
+ <mkdir dir="${release.bin.dir}/${log.dir}"/>
+
+ <antcall target="tgzandzip">
+ <param name="file" value="${release.dir}/${release.name}-bin"/>
+ <param name="source" value="${release.bin.dir}"/>
+ </antcall>
+
+ </target>
+
+
+ <target name="std-release" depends="std-src-release, std-bin-release"/>
+
+</project>