| <!-- |
| - |
| - 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" xmlns:ivy="antlib:org.apache.ivy.ant" default="build"> |
| |
| <import file="common.xml"/> |
| |
| <property name="optional" value="false"/> |
| <property name="modules.opt.default" value="bdbstore bdbstore/jmx perftests/visualisation-jfc"/> |
| <condition property="modules.opt" value="" else="${modules.opt.default}"> |
| <isfalse value="${optional}"/> |
| </condition> |
| <condition property="broker-plugins-exclude" value="jdbc-provider-bone" else=""> |
| <isfalse value="${optional}"/> |
| </condition> |
| |
| <findSubProjects name="broker-plugins" dir="broker-plugins" excludes="${broker-plugins-exclude}"/> |
| <findSubProjects name="client-plugins" dir="client-plugins"/> |
| |
| <property name="modules.core" value="common management/common amqp-1-0-common broker client amqp-1-0-client amqp-1-0-client-jms tools"/> |
| <property name="modules.examples" value="client/example management/example amqp-1-0-client/example amqp-1-0-client-jms/example"/> |
| <property name="modules.tests" value="systests perftests"/> |
| <property name="modules.plugin" value="${broker-plugins} ${client-plugins}"/> |
| <property name="modules.jca" value="jca"/> |
| <property name="modules" value="${modules.core} ${modules.examples} |
| ${modules.jca} ${modules.plugin} ${modules.tests} ${modules.opt}"/> |
| |
| <property name="qpid.jar" location="${build.lib}/qpid-all.jar"/> |
| <basename property="qpid.jar.name" file="${qpid.jar}"/> |
| |
| <property name="resources" value="${project.root}/resources"/> |
| |
| <!-- Modules for which coverage will be created by the cover-test target --> |
| <property name="coverage.modules" value="${modules}"/> |
| |
| <map property="release.excludes" value="${modules}"> |
| <globmapper from="*" to="*/\*\*"/> |
| </map> |
| |
| |
| <property name="release.zip" location="${release}/${project.namever}-java.zip"/> |
| <property name="release.tar" location="${release}/${project.namever}-java.tar"/> |
| <property name="release.tgz" location="${release}/${project.namever}-java.tar.gz"/> |
| <property name="release.bz2" location="${release}/${project.namever}-java.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="pom" description="generate poms"> |
| <iterate target="pom"/> |
| </target> |
| |
| <target name="release-mvn" description="Install the artifacts into the local repository"> |
| <iterate target="release-mvn"/> |
| </target> |
| |
| <target name="deploy-snapshot" description="deploy snapshot artifacts to nexus"> |
| <iterate target="deploy-snapshot"/> |
| </target> |
| |
| <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" depends="manifest"> |
| |
| <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="report-module" description="generate junitreport for modules"> |
| <iterate target="report-module"/> |
| </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="test-doc" description="generate api-doc"> |
| <iterate target="test-doc"/> |
| </target> |
| |
| <target name="bundle" description="create OSGi bundles"> |
| <iterate target="bundle"/> |
| </target> |
| |
| <target name="release-bin" description="build a binary release artifact" depends="build,bundle"> |
| <iterate target="release-bin"/> |
| </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"/> |
| <globmapper from="${build.lib}${file.separator}*" to="*"/> |
| </pathconvert> |
| |
| <jar destfile="${qpid.jar}"> |
| <manifest> |
| <attribute name="Class-Path" value="${qpid.jar.classpath}"/> |
| </manifest> |
| <metainf dir="${project.root}/resources/"/> |
| </jar> |
| |
| <touch file="${qpid.jar}"/> |
| </target> |
| |
| <target name="build" depends="retrieve-dependencies" 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}" filemode="755"> |
| <include name="bin/*"/> |
| <exclude name="bin/*.txt"/> |
| </zipfileset> |
| |
| <zipfileset dir="${build}" prefix="${project.namever}" filemode="644"> |
| <include name="bin/*.txt"/> |
| </zipfileset> |
| |
| <zipfileset dir="${build}" prefix="${project.namever}" excludes="${release.excludes}" filemode="644" dirmode="755"> |
| <exclude name="bin/**"/> |
| <exclude name="scratch/**"/> |
| </zipfileset> |
| |
| <zipfileset dir="${resources}" prefix="${project.namever}" filemode="644"/> |
| </zip> |
| </target> |
| |
| <target name="tar" depends="zip" description="build release archive"> |
| <tar destfile="${release.tar}" longfile="gnu" > |
| <zipfileset src="${release.zip}"/> |
| </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}"/> |
| <delete dir="${tasks.classes}"/> |
| </target> |
| |
| <target name="coverage-report" description="generate coverage report" depends="cobertura-init"> |
| <mkdir dir="${build.coverage.report}" /> |
| <mkdir dir="${build.coverage.src}" /> |
| |
| <cobertura-merge datafile="${build.coverage.report}/cobertura.ser"> |
| <!-- merge all module coverage reports --> |
| <fileset dir="${build}"> |
| <include name="**/*.ser"/> |
| </fileset> |
| </cobertura-merge> |
| |
| <!-- Copy all covered sources to single directory for cobertura report --> |
| |
| <foreach property="module" list="${coverage.modules}"> |
| |
| <copy todir="${build.coverage.src}"> |
| <fileset dir="${module}/src/main/java" includes="**/*.java"/> |
| </copy> |
| |
| <copy todir="${build.coverage.src}"> |
| <fileset dir="build/scratch/${module}/src" includes="**/*.java"/> |
| </copy> |
| </foreach> |
| |
| <cobertura-report format="xml" |
| destdir="${build.coverage.report}" |
| datafile="${build.coverage.report}/cobertura.ser"> |
| <fileset dir="${build.coverage.src}" includes="**/*.java" /> |
| </cobertura-report> |
| |
| <cobertura-report format="html" |
| destdir="${build.coverage.report}" |
| datafile="${build.coverage.report}/cobertura.ser"> |
| <fileset dir="${build.coverage.src}" includes="**/*.java" /> |
| </cobertura-report> |
| </target> |
| |
| <target name="instrument" description="instrument for artifacts"> |
| <iterate target="instrument"/> |
| </target> |
| |
| <target name="cover-test" description="run tests and generate coverage information" depends="build"> |
| <iterate target="cover-test" modules="${coverage.modules}"/> |
| </target> |
| |
| <target name="test-interop" depends="build,compile-tests" |
| description="run JMS examples against the corresponding c++ and python examples"> |
| <property name="qpid.src.home" location=".."/> |
| <echo-prop name="qpid.src.home"/> |
| <exec executable="/bin/sh" failonerror="true"> |
| <env key="QPID_SRC_HOME" value="${qpid.src.home}"/> |
| <arg value="-c"/> |
| <arg value="${project.root}/client/example/bin/verify_all"/> |
| </exec> |
| </target> |
| |
| <target name="testkit" depends="build,compile-tests"> |
| <jython path="${mllib.dir}"> |
| <args> |
| <arg value="${mllib.dir}/qpid-python-test"/> |
| <arg value="-m ${basedir}/testkit/testkit"/> |
| </args> |
| </jython> |
| </target> |
| |
| <target name="findbugs" depends="build,findbugs-init"> |
| |
| <mkdir dir="${build.findbugs}"/> |
| |
| <findbugs home="${findbugs.dir}" |
| output="html" |
| outputFile="${build.findbugs}/report.html" |
| stylesheet="fancy-hist.xsl" |
| jvmargs="-Xmx512m" |
| projectName="Qpid"> |
| <!-- The classes for analysis --> |
| <fileset dir="${build.lib}" includes="qpid*.jar" excludes="*test*.jar *-sources*.jar *example*.jar qpid-all.jar"/> |
| |
| <!--Additional classes, not for analysis --> |
| <auxClassPath> |
| <fileset dir="${basedir}/lib" includes="**/*.jar"/> |
| </auxClassPath> |
| |
| <!-- Source, used for improved reporting --> |
| <sourcePath> |
| <fileset dir="${basedir}" includes="**/src/**/org/.." /> |
| </sourcePath> |
| </findbugs> |
| </target> |
| |
| <target name="eclipse" description="build eclipse project and classpath files"> |
| <iterate target="eclipse"/> |
| </target> |
| |
| <!-- check the following properties which must be specified by the user--> |
| <target name="check-upload-props-exist" description="check that the required properties have been set"> |
| <fail unless="nexus.user" message="You must supply the 'nexus.user' property"/> |
| <fail unless="nexus.password" message="You must supply the 'nexus.password' property"/> |
| <fail unless="maven.artifact.dir" message="You must supply the 'maven.artifact.dir' property"/> |
| </target> |
| |
| <target name="perform-nexus-upload"> |
| <ivy:configure file="ivysettings.nexus.xml"/> |
| <ivy:resolve file="ivy.nexus.xml"/> |
| <ivy:deliver/> |
| <ivy:publish publishivy="false" resolver="nexus" |
| artifactspattern="${maven.artifact.dir}/[organisation]/[module]/[artifact]/[revision]/[artifact]-[revision](-[classifier]).[ext]"/> |
| </target> |
| |
| <target name="upload" depends="load-ivy, check-upload-props-exist, perform-nexus-upload"/> |
| |
| </project> |