| <!-- |
| - |
| - 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="module" xmlns:artifact="antlib:org.apache.maven.artifact.ant"> |
| |
| <import file="common.xml"/> |
| |
| <property file="${project.root}/build.deps"/> |
| |
| <path id="maven-ant-tasks.classpath" path="${project.root}/${maven-ant-tasks}" /> |
| <typedef resource="org/apache/maven/artifact/ant/antlib.xml" |
| uri="antlib:org.apache.maven.artifact.ant" |
| classpathref="maven-ant-tasks.classpath" /> |
| |
| <map property="module" value="${basedir}" split="${path.separator}"> |
| <globmapper from="${project.root}${file.separator}*" to="*"/> |
| </map> |
| |
| <map property="module.name" value="${module}"> |
| <filtermapper> |
| <replacestring from="${file.separator}" to="-"/> |
| </filtermapper> |
| </map> |
| |
| <echo message="Running ant for module : ${module}" level="info"/> |
| |
| <property name="module.build" location="${build.scratch}/${module}"/> |
| <property name="module.classes" location="${module.build}/classes"/> |
| <property name="module.instrumented" location="${module.build}/classes-instrumented"/> |
| <property name="module.precompiled" location="${module.build}/src"/> |
| <property name="module.api" location="${build.api}/${module}/"/> |
| <property name="module.test.api" location="${build.test.api}/${module}"/> |
| <property name="module.test.classes" location="${module.build}/test/classes"/> |
| <property name="module.test.resources" location="src/test/resources"/> |
| <property name="module.results" location="${build.results}/${module}"/> |
| <property name="module.failed" location="${module.results}/FAILED"/> |
| <property name="module.src" location="src/main/java"/> |
| <property name="module.test.src" location="src/test/java"/> |
| <property name="module.bin" location="bin"/> |
| <property name="module.etc" location="etc"/> |
| |
| <property name="module.src.resources" location="src/main/resources"/> |
| <property name="module.src.resources.metainf" location="${module.src.resources}/META-INF"/> |
| <property name="module.resources.dir" location="resources/"/> |
| <property name="module.metainf" location="${module.build}/META-INF"/> |
| |
| <property name="module.namever" value="${project.name}-${module.name}-${project.version}"/> |
| <property name="module.namever.osgi" value="${project.name}-${module.name}_${project.version}.0.osgi"/> |
| <property name="module.release.base" value="${basedir}/release"/> |
| <property name="module.release" value="${module.release.base}/${module.namever}"/> |
| <property name="module.release.lib" value="${module.release}/lib"/> |
| <property name="module.release.zip" location="${module.release.base}/${module.namever}.zip"/> |
| <property name="module.release.tar" location="${module.release.base}/${module.namever}.tar"/> |
| <property name="module.release.tgz" location="${module.release.base}/${module.namever}.tar.gz"/> |
| <property name="module.release.bz2" location="${module.release}/${module.namever}.tar.bz2"/> |
| |
| <property name="module.genpom.args" value=""/> |
| <property name="module.maven.depends" value=""/> |
| <property name="maven.remote.repo" value="file://${module.release.base}/maven"/> |
| |
| <property name="broker.log.prefix" value="BROKER: "/> |
| <property name="broker.log.interleave" value="true"/> |
| |
| <property name="module.jar" location="${build.lib}/${project.name}-${module.name}-${project.version}.jar"/> |
| <property name="module.qpid.jar" location="${module.release.lib}/qpid-all.jar"/> |
| <basename property="qpid.jar.name" file="${module.qpid.jar}"/> |
| |
| <property name="module.coverage" location="${module.build}/coverage"/> |
| <property name="cobertura.datafile" location="${module.instrumented}/cobetura.ser"/> |
| |
| |
| <available property="module.test.src.exists" file="${module.test.src}"/> |
| <available property="module.etc.exists" file="${module.etc}"/> |
| <available property="module.bin.exists" file="${module.bin}"/> |
| <available property="module.src.resources.exists" file="${module.src.resources}"/> |
| <available property="module.test.src.resources.exists" file="${module.test.resources}"/> |
| <available property="module.src.resources.metainf.exists" file="${module.src.resources.metainf}"/> |
| <available property="module.resources.dir.exists" file="${module.resources.dir}"/> |
| |
| <property name="module.source.jar" |
| location="${build.lib}/${project.name}-${module.name}-${project.version}-sources.jar"/> |
| |
| <!-- module.depends and module.test.depends are supplied by the importing file --> |
| <property name="module.depends" value=""/> |
| <property name="module.test.depends" value=""/> |
| <property name="module.test.excludes" value=""/> |
| |
| <!-- Add depenencies dependencies to path --> |
| <map property="module.depends.libs" value="${module.depends}" join=" "> |
| <chainedmapper> |
| <filtermapper> |
| <replacestring from="${file.separator}" to="-"/> |
| </filtermapper> |
| <propertymapper from="*" to="*.libs"/> |
| </chainedmapper> |
| </map> |
| <condition property="module.depends.libs.includes" value="__EMPTY__" else="${module.depends.libs}"> |
| <equals trim="true" arg1="${module.depends.libs}" arg2=""/> |
| </condition> |
| |
| |
| <!-- Add depenencies test dependencies to path --> |
| <map property="module.test.depends.libs" value="${module.test.depends}" join=" "> |
| <chainedmapper> |
| <filtermapper> |
| <replacestring from="${file.separator}" to="-"/> |
| </filtermapper> |
| <propertymapper from="*" to="*.libs"/> |
| </chainedmapper> |
| </map> |
| <condition property="module.test.depends.libs.includes" value="__EMPTY__" else="${module.test.depends.libs}"> |
| <equals trim="true" arg1="${module.test.depends.libs}" arg2=""/> |
| </condition> |
| |
| |
| <indirect name="module.libs" variable="${module.name}.libs"/> |
| <condition property="module.libs.includes" value="__EMPTY__" else="${module.libs}"> |
| <equals trim="true" arg1="${module.libs}" arg2=""/> |
| </condition> |
| |
| <indirect name="module.test.libs" variable="${module.name}.test.libs"/> |
| <condition property="module.test.libs.includes" value="__EMPTY__" else="${module.test.libs}"> |
| <equals trim="true" arg1="${module.test.libs}" arg2=""/> |
| </condition> |
| |
| <path id="module.libs"> |
| <fileset dir="${project.root}" includes="${module.libs.includes}"/> |
| <fileset dir="${project.root}" includes="${module.depends.libs.includes}"/> |
| </path> |
| |
| <path id="module.test.libs"> |
| <fileset dir="${project.root}" includes="${module.test.libs.includes}"/> |
| <fileset dir="${project.root}" includes="${module.test.depends.libs.includes}"/> |
| </path> |
| |
| <path id="module.src.path"> |
| <pathelement location="${module.src}"/> |
| <pathelement location="${module.precompiled}"/> |
| </path> |
| |
| <path id="module.test.src.path"> |
| <pathelement location="${module.test.src}"/> |
| </path> |
| |
| <property name="module.test.jar" |
| location="${build.lib}/${project.name}-${module.name}-tests-${project.version}.jar"/> |
| |
| <map property="module.depends.jars" value="${module.depends}" join=","> |
| <globmapper from="*" to="${project.name}-*-${project.version}.jar"/> |
| <filtermapper> |
| <replacestring from="/" to="-"/> |
| </filtermapper> |
| </map> |
| |
| <map property="module.depends.jars.path" value="${module.depends}" join="${path.separator}"> |
| <filtermapper> |
| <replacestring from="/" to="-"/> |
| </filtermapper> |
| |
| <globmapper from="*" to="${build.lib}/${project.name}-*-${project.version}.jar"/> |
| </map> |
| |
| <map property="module.test.depends.jars.path" value="${module.test.depends}" join="${path.separator}"> |
| <filtermapper> |
| <replacestring from="/" to="-"/> |
| </filtermapper> |
| <globmapper from="*" to="${build.lib}/${project.name}-*-${project.version}.jar"/> |
| </map> |
| |
| <!-- used for building the module --> |
| <path id="module.class.path"> |
| <pathelement path="${module.depends.jars.path}"/> |
| <path refid="module.libs"/> |
| </path> |
| |
| <!-- used at runtime --> |
| <path id="module.runtime.class.path"> |
| <pathelement location="${module.jar}"/> |
| <pathelement path="${module.depends.jars.path}"/> |
| <path refid="module.libs"/> |
| </path> |
| |
| <!-- used to build the tests --> |
| <path id="module.test.path"> |
| <path refid="module.runtime.class.path"/> |
| <pathelement path="${module.test.depends.jars.path}"/> |
| <path refid="module.test.libs"/> |
| </path> |
| |
| <!-- used to run the tests --> |
| <path id="module.test.runtime.path"> |
| <pathelement path="${module.test.jar}"/> |
| <path refid="module.runtime.class.path"/> |
| <pathelement path="${module.test.depends.jars.path}"/> |
| <path refid="module.test.libs"/> |
| </path> |
| |
| <property name="javac.deprecation" value="off"/> |
| |
| <target name="debug"> |
| <echo-prop name="basedir"/> |
| <echo-prop name="project.root"/> |
| <echo-prop name="module"/> |
| <echo-prop name="module.libs"/> |
| <echo-prop name="module.test.libs"/> |
| <echo-prop name="module.name"/> |
| <echo-prop name="module.jar"/> |
| <echo-prop name="module.depends"/> |
| |
| <echo-prop name="module.test.depends"/> |
| |
| <echo-prop name="module.depends.libs"/> |
| <echo-prop name="module.test.depends.libs"/> |
| |
| <echo-prop name="module.depends.jars"/> |
| <echo-prop name="module.depends.jars.path"/> |
| <echo-prop name="module.test.depends.jars.path"/> |
| |
| <echo-path refid="module.src.path"/> |
| <echo-path refid="module.class.path"/> |
| <echo-path refid="module.runtime.class.path"/> |
| <echo-path refid="module.test.path"/> |
| <echo-path refid="module.test.runtime.path"/> |
| </target> |
| |
| <target name="prepare"> |
| <mkdir dir="${build.bin}"/> |
| <mkdir dir="${build.etc}"/> |
| <mkdir dir="${build.lib}"/> |
| <mkdir dir="${build.results}"/> |
| <mkdir dir="${build.scratch.broker.plugins.lib}"/> |
| <mkdir dir="${module.classes}"/> |
| <mkdir dir="${module.precompiled}"/> |
| <mkdir dir="${module.api}"/> |
| <mkdir dir="${module.test.api}"/> |
| <mkdir dir="${module.test.classes}"/> |
| <mkdir dir="${module.results}"/> |
| </target> |
| |
| <!--Overridden by (but still used in) the JCA module --> |
| <target name="pom" depends="prepare" if="module.genpom"> |
| <jython path="${mllib.dir}"> |
| <args> |
| <arg line='"${project.root}/genpom"'/> |
| <arg line='-s "${project.root}/lib/poms${path.separator}lib/poms"'/> |
| <arg line='-o "${build.scratch}/qpid-${module.name}.pom"'/> |
| <arg line="-u ${project.url}"/> |
| <arg line="-g ${project.groupid}"/> |
| <arg line="-v ${project.version.maven}${maven.version.suffix}"/> |
| <arg line="-p qpid"/> |
| <arg line='-m "${module.depends} ${module.maven.depends}"'/> |
| <arg line="-a ${module.name}"/> |
| <arg line="${module.genpom.args}"/> |
| <arg line="${module.libs}"/> |
| </args> |
| </jython> |
| </target> |
| |
| <!--Overridden by (but still used in) the JCA module --> |
| <target name="release-mvn" depends="build,pom" if="module.genpom" description="Install the artifacts into the local repository and prepare the release artifacts"> |
| <artifact:pom id="module.pom" file="${build.scratch}/qpid-${module.name}.pom"/> |
| |
| <artifact:install file="${module.jar}" pomRefId="module.pom" settingsFile="${maven.settings.xml}"> |
| <localRepository path="${maven.local.repo}"/> |
| </artifact:install> |
| |
| <artifact:deploy file="${module.jar}" pomRefId="module.pom" uniqueVersion="${maven.unique.version}" settingsFile="${maven.settings.xml}"> |
| <attach file="${module.source.jar}" classifier="sources"/> |
| <localRepository path="${maven.local.repo}"/> |
| <remoteRepository url="${maven.remote.repo}"/> |
| </artifact:deploy> |
| </target> |
| |
| <!--Overridden by (but still used in) the JCA module --> |
| <target name="deploy-snapshot" depends="build,pom" if="module.genpom" description="deploy a snapshot build to nexus"> |
| <!-- In order to use this target you need to have predefined a username and password for the |
| server with id ${maven.snapshots.repo.id} in your m2 settings file, e.g ~/.m2/settings.xml --> |
| <artifact:pom id="module.pom" file="${build.scratch}/qpid-${module.name}.pom"/> |
| |
| <fail message="The pom version must include -SNAPSHOT. Version found was: ${module.pom.version}"> |
| <condition> |
| <not> |
| <contains substring="-SNAPSHOT" string="${module.pom.version}" /> |
| </not> |
| </condition> |
| </fail> |
| |
| <artifact:install file="${module.jar}" pomRefId="module.pom" settingsFile="${maven.settings.xml}"> |
| <localRepository path="${maven.local.repo}"/> |
| </artifact:install> |
| |
| <artifact:deploy file="${module.jar}" pomRefId="module.pom"> |
| <localRepository path="${maven.local.repo}"/> |
| <remoteRepository id="${maven.snapshots.repo.id}" url="${maven.snapshots.repo.url}"/> |
| </artifact:deploy> |
| </target> |
| |
| <target name="precompile"/> |
| |
| <target name="compile" depends="prepare,precompile" description="compile sources"> |
| |
| <echo message="Targeting : ${java.target}" level="info"/> |
| |
| <javac source="${java.source}" target="${java.target}" |
| destdir="${module.classes}" debug="on" debuglevel="lines,vars,source" includeantruntime="false" |
| deprecation="${javac.deprecation}"> |
| <compilerarg line="${javac.compiler.args}"/> |
| <src refid="module.src.path"/> |
| <classpath refid="module.class.path"/> |
| </javac> |
| |
| <!-- copy any non java src files into the build tree, e.g. properties files --> |
| <copy todir="${module.classes}" verbose="true"> |
| <fileset dir="${module.src}"> |
| <exclude name="**/*.java"/> |
| <exclude name="**/package.html"/> |
| </fileset> |
| </copy> |
| </target> |
| |
| <target name="precompile-tests" if="module.test.src.exists"/> |
| |
| <target name="copy-test-resources" if="module.test.src.resources.exists"> |
| <echo message="Copying test resources from ${module.test.resources} to ${module.test.classes}..."/> |
| <copy todir="${module.test.classes}" failonerror="true"> |
| <fileset dir="${module.test.resources}"/> |
| </copy> |
| </target> |
| |
| <target name="compile-tests" depends="compile,precompile-tests" if="module.test.src.exists" |
| description="compilte unit tests"> |
| <javac target="${java.target}" source="${java.source}" |
| destdir="${module.test.classes}" debug="on" |
| deprecation="${javac.deprecation}" |
| srcdir="${module.test.src}" |
| includeantruntime="false"> |
| <classpath refid="module.test.path"/> |
| </javac> |
| |
| <!-- copy any non java src files into the build tree, e.g. properties files --> |
| <copy todir="${module.test.classes}" verbose="true"> |
| <fileset dir="${module.test.src}"> |
| <exclude name="**/*.java"/> |
| <exclude name="**/package.html"/> |
| </fileset> |
| </copy> |
| </target> |
| |
| |
| <property name="profile" value="java-mms.0-10"/> |
| <property name="testprofile.file" value="${test.profiles}/${profile}.testprofile"/> |
| |
| <available file="${testprofile.file}" property="testprofile.file.present"/> |
| <fail unless="testprofile.file.present" message="The requested test profile was not found: ${testprofile.file}"/> |
| |
| <property file="${testprofile.file}" prefix="preload"/> |
| <property name="preload.include" value=""/> |
| <property name="profiles" value="${preload.include} ${profile}"/> |
| <map property="_profile_files" value="${profiles}" join=" "> |
| <globmapper from="*" to="*.testprofile"/> |
| </map> |
| |
| <concat destfile="${build.scratch}/test-${profile}.properties" force="yes" append="no" fixlastline="yes"> |
| <filelist dir="${test.profiles}" files="testprofile.defaults"/> |
| <filelist dir="${test.profiles}" files="${_profile_files}"/> |
| </concat> |
| <property file="${build.scratch}/test-${profile}.properties"/> |
| |
| <map property="test.excludefiles" value="${test.excludes}"> |
| <globmapper from="*" to="${test.profiles}/*;"/> |
| </map> |
| |
| <condition property="dontruntest" value="dontruntest" else="runtest"> |
| <contains substring="${module.name}" string="${exclude.modules}" /> |
| </condition> |
| |
| <!-- JVM args pass to forked Junit JVM --> |
| <property name="jvm.args" value=""/> |
| <!-- Following properties are used by the tests --> |
| <property name="test.output" value="${module.results}"/> |
| <property name="QPID_HOME" value="${qpid.home}"/> |
| <property name="QPID_WORK" value="${qpid.work}"/> |
| <property name="broker.existing.qpid.work" value=""/> |
| |
| <propertyset id="all.test.systemproperties"> |
| <propertyref prefix="test"/> |
| <propertyref prefix="profile"/> |
| <propertyref prefix="javax.net.ssl"/> |
| <propertyref prefix="broker"/> |
| <propertyref prefix="qpid"/> |
| |
| <propertyref name="amqj.logging.level"/> |
| <propertyref name="amqj.server.logging.level"/> |
| <propertyref name="amqj.protocol.logging.level"/> |
| |
| <propertyref name="log4j.debug"/> |
| <propertyref name="log4j.configuration"/> |
| <propertyref name="log4j.configuration.file"/> |
| |
| <propertyref name="root.logging.level"/> |
| <propertyref name="java.naming.factory.initial"/> |
| <propertyref name="java.naming.provider.url"/> |
| <propertyref name="messagestore.class.name" /> |
| <propertyref name="max_prefetch"/> |
| |
| <propertyref name="QPID_HOME"/> |
| <propertyref name="QPID_WORK"/> |
| <propertyref name="example.plugin.target"/> |
| </propertyset> |
| |
| <target name="test" depends="build,compile-tests" if="module.test.src.exists" |
| unless="${dontruntest}" description="execute unit tests"> |
| |
| <delete file="${module.failed}"/> |
| |
| <echo message="Using profile:${profile}" level="info"/> |
| <junit fork="yes" forkmode="once" maxmemory="${test.mem}" reloading="no" |
| haltonfailure="${haltonfailure}" haltonerror="${haltonerror}" |
| failureproperty="test.failures" printsummary="on" timeout="6000000" |
| dir="${project.root}" > |
| |
| <jvmarg line="${jvm.args}" /> |
| |
| <syspropertyset refid="all.test.systemproperties"/> |
| |
| <formatter type="plain"/> |
| <formatter type="xml"/> |
| |
| <classpath refid="module.test.runtime.path"/> |
| |
| <batchtest todir="${module.results}"> |
| <fileset dir="${module.test.src}" excludes="${module.test.excludes}"> |
| <include name="**/${test}.java"/> |
| </fileset> |
| </batchtest> |
| </junit> |
| |
| <antcall target="touch-failed"/> |
| |
| <condition property="failed"> |
| <and> |
| <isfalse value="${test.failures.ignore}"/> |
| <available file="${module.failed}"/> |
| </and> |
| </condition> |
| |
| <fail if="failed" message="TEST SUITE FAILED"/> |
| |
| </target> |
| |
| <target name="report-module" description="generate junit reports for each module"> |
| <junitreport todir="${module.results}"> |
| <fileset dir="${module.results}"> |
| <include name="TEST-*.xml"/> |
| </fileset> |
| <report format="frames" todir="${module.results}/report/html"/> |
| </junitreport> |
| </target> |
| |
| <target name="touch-failed" if="test.failures"> |
| <touch file="${module.failed}"/> |
| <touch file="${build.failed}"/> |
| </target> |
| |
| <target name="copy-bin" if="module.bin.exists" description="copy bin directory if it exists to build tree"> |
| <copy todir="${build.bin}" failonerror="false"> |
| <fileset dir="${module.bin}"/> |
| </copy> |
| <chmod dir="${build.bin}" perm="ugo+rx" includes="**/*"/> |
| </target> |
| |
| <target name="copy-bin-release" if="module.bin.exists" description="copy dependencies into module release"> |
| <copy todir="${module.release}/bin" failonerror="true"> |
| <fileset dir="${module.bin}" /> |
| </copy> |
| <chmod dir="${module.release}/bin" perm="ugo+rx" includes="**/*"/> |
| </target> |
| |
| <target name="copy-etc" if="module.etc.exists" description="copy etc directory if it exists to build tree"> |
| <copy todir="${build.etc}" failonerror="false"> |
| <fileset dir="${module.etc}"/> |
| </copy> |
| </target> |
| |
| <target name="copy-etc-release" if="module.etc.exists" description="copy etc directory if it exists to build tree"> |
| <copy todir="${module.release}/etc" failonerror="false" flatten="true"> |
| <fileset dir="${module.etc}"/> |
| </copy> |
| </target> |
| |
| <target name="postbuild" description="run after a build"/> |
| |
| <target name="build" depends="jar,jar-tests,jar-sources,libs,copy-bin,copy-etc,postbuild,copy-broker-plugin-jars" description="compile and copy resources into build tree"/> |
| |
| <target name="jar.manifest" depends="compile,copy-resources,copy-files-to-module-metainf" if="module.manifest"> |
| <jar destfile="${module.jar}" basedir="${module.classes}" manifest="${module.manifest}"> |
| <metainf dir="${module.metainf}" /> |
| </jar> |
| </target> |
| |
| <target name="jar.nomanifest" depends="compile,copy-resources,copy-files-to-module-metainf" unless="module.manifest"> |
| <jar destfile="${module.jar}" basedir="${module.classes}"> |
| <metainf dir="${module.metainf}" /> |
| </jar> |
| </target> |
| |
| <target name="copy-broker-plugin-jars" depends="copy-broker-plugin-jars-deps" if="broker.plugin" description="copy broker plugins for use in release packaging"> |
| <copy file="${module.jar}" todir="${build.scratch.broker.plugins.lib}" failonerror="true"/> |
| </target> |
| |
| <!-- Overridden in broker-plugins/amqp-1-0-protocol, bdbstore, and bdbstore/jmx modules --> |
| <target name="copy-broker-plugin-jars-deps" if="broker.plugin" description="copy broker plugins dependencies for use in release packaging"> |
| <copylist todir="${build.scratch.broker.plugins.lib}" dir="${project.root}" files="${module.libs}"/> |
| </target> |
| |
| <target name="copy-files-to-module-metainf" depends="copy-project-resources-metainf, copy-module-resources-metainf, copy-module-src-resources-metainf"/> |
| |
| <target name="copy-project-resources-metainf"> |
| <copy todir="${module.metainf}" failonerror="true"> |
| <fileset dir="${project.root}/resources/"/> |
| </copy> |
| </target> |
| |
| <target name="copy-resources" if="module.src.resources.exists"> |
| <echo message="Copying resources from ${module.src.resources} to ${module.classes}..."/> |
| <copy todir="${module.classes}" failonerror="true"> |
| <fileset dir="${module.src.resources}" excludes="META-INF/**"/> |
| </copy> |
| </target> |
| |
| <target name="copy-module-resources-metainf" if="module.resources.dir.exists"> |
| <copy todir="${module.metainf}" failonerror="false" overwrite="true"> |
| <fileset dir="${module.resources.dir}"/> |
| </copy> |
| </target> |
| |
| <target name="copy-module-src-resources-metainf" if="module.src.resources.metainf.exists"> |
| <copy todir="${module.metainf}" failonerror="true"> |
| <fileset dir="${module.src.resources.metainf}"/> |
| </copy> |
| </target> |
| |
| <target name="jar" depends="jar.manifest,jar.nomanifest" description="create jar"/> |
| |
| <target name="jar-tests" depends="compile-tests, copy-test-resources" description="create unit test jar"> |
| <jar destfile="${module.test.jar}" basedir="${module.test.classes}"/> |
| </target> |
| |
| <target name="jar-sources" depends="prepare" description="create sources jar"> |
| <jar destfile="${module.source.jar}"> |
| <fileset dir="${project.root}/resources"> |
| <include name="LICENSE"/> |
| <include name="NOTICE"/> |
| </fileset> |
| <fileset dir="${module.src}" includes="**/*.java"/> |
| <fileset dir="${module.precompiled}" includes="**/*.java"/> |
| </jar> |
| </target> |
| |
| <target name="libs" description="copy dependencies into build tree"> |
| <copylist todir="${build.lib}" dir="${project.root}" files="${module.libs}"/> |
| </target> |
| |
| |
| <target name="libs-release" description="copy dependencies into module release"> |
| <!-- Copy the module dependencies --> |
| <echo message="${module.libs}"/> |
| <copylist todir="${module.release}/lib" dir="${project.root}" files="${module.libs}"/> |
| <copylist todir="${module.release}/lib" dir="${project.root}" files="${module.depends.libs}"/> |
| |
| <!-- Copy the jar for this module --> |
| <copy todir="${module.release}/lib" failonerror="true"> |
| <fileset file="${module.jar}"/> |
| <fileset dir="${build.lib}" includes="${module.depends.jars}"/> |
| </copy> |
| </target> |
| |
| <target name="resources" description="copy resources into build tree"> |
| <copy todir="${build}" failonerror="false" flatten="true"> |
| <fileset dir="${basedir}${file.separator}.." includes="${resources}"/> |
| </copy> |
| </target> |
| |
| <target name="resources-release" description="copy resources into module release"> |
| <copy todir="${module.release}" failonerror="false" flatten="true"> |
| <fileset dir="${resources}" excludes="META-INF"/> |
| </copy> |
| </target> |
| |
| <uptodate property="doc.done" targetfile="${module.api}/index.html"> |
| <srcfiles dir="${module.src}" includes="**/*.java"/> |
| </uptodate> |
| |
| <property name="module.doc.access" value="package"/> |
| <target name="doc" depends="prepare" unless="doc.done" description="generate api-doc"> |
| <javadoc access="${module.doc.access}" destdir="${module.api}" author="false" version="true" use="true" |
| windowtitle="${project.name} - ${module.name} - API Documentation" |
| sourcepathref="module.src.path" classpathref="module.class.path" packagenames="*"> |
| <arg value="-J-Dhttp.proxyHost=${http.proxyHost}"/> |
| <arg value="-J-Dhttp.proxyPort=${http.proxyPort}"/> |
| <bottom><![CDATA[<em><a href="http://www.apache.org/licenses/LICENSE-2.0">Licensed to the Apache Software Foundation</a></em>]]></bottom> |
| <link href="http://java.sun.com/j2se/1.5.0/docs/api/"/> |
| <link href="http://download.oracle.com/docs/cd/E17477_01/javaee/5/api/"/> |
| <link href="http://commons.apache.org/configuration/apidocs/"/> |
| <tag name="todo" scope="all" description="Todo:" /> |
| </javadoc> |
| </target> |
| |
| <uptodate property="test-doc.done" targetfile="${module.test.api}/index.html"> |
| <srcfiles dir="${module.test.src}" includes="**/*.java"/> |
| </uptodate> |
| |
| <property name="module.test.doc.access" value="public"/> |
| <target name="test-doc" depends="prepare" unless="testdoc.done" if="module.test.src.exists" description="generate test api-doc"> |
| <javadoc access="${module.test.doc.access}" destdir="${module.test.api}" author="false" version="true" use="true" |
| windowtitle="${project.name} - ${module.name} - Test API Documentation" |
| sourcepathref="module.test.src.path" classpathref="module.test.path" packagenames="*"> |
| <arg value="-J-Dhttp.proxyHost=${http.proxyHost}"/> |
| <arg value="-J-Dhttp.proxyPort=${http.proxyPort}"/> |
| <bottom><![CDATA[<em><a href="http://www.apache.org/licenses/LICENSE-2.0">Licensed to the Apache Software Foundation</a></em>]]></bottom> |
| <link href="http://java.sun.com/j2se/1.5.0/docs/api/"/> |
| <link href="http://download.oracle.com/docs/cd/E17477_01/javaee/5/api/"/> |
| <link href="http://commons.apache.org/configuration/apidocs/"/> |
| <tag name="todo" scope="all" description="Todo:" /> |
| </javadoc> |
| </target> |
| |
| <target name="release-bin-prepare"> |
| <mkdir dir="${module.release}"/> |
| <available property="module.release.exists" file="${module.release}"/> |
| </target> |
| |
| <target name="check-module-manifest"> |
| <uptodate property="module-manifest.done" targetfile="${qpid.jar}"> |
| <srcfiles dir="${build.lib}" includes="**/*.jar" excludes="**/${qpid.jar.name}"/> |
| </uptodate> |
| </target> |
| |
| <target name="module-manifest" depends="check-module-manifest" unless="module-manifest.done"> |
| <path id="class.path"> |
| <fileset dir="${module.release.lib}" > |
| <include name="*.jar"/> |
| <exclude name="${qpid.jar.name}"/> |
| </fileset> |
| </path> |
| <pathconvert property="qpid.jar.classpath" pathsep=" " dirsep="/"> |
| <path refid="class.path"/> |
| <globmapper from="${module.release.lib}${file.separator}*" to="*"/> |
| </pathconvert> |
| |
| <jar destfile="${module.qpid.jar}"> |
| <manifest> |
| <attribute name="Class-Path" value="${qpid.jar.classpath}"/> |
| </manifest> |
| <metainf dir="${project.root}/resources/"/> |
| </jar> |
| |
| <touch file="${module.qpid.jar}"/> |
| </target> |
| |
| |
| <target name="zip-release" depends="build-release-bin" description="build module release archive"> |
| <zip destfile="${module.release.zip}"> |
| <zipfileset dir="${module.release}" prefix="${module.namever}" filemode="755"> |
| <include name="bin/*"/> |
| <exclude name="bin/*.txt"/> |
| </zipfileset> |
| |
| <zipfileset dir="${module.release}" prefix="${module.namever}" filemode="644"> |
| <include name="bin/*.txt"/> |
| </zipfileset> |
| |
| <zipfileset dir="${module.release}" prefix="${module.namever}" excludes="${module.release.excludes}" filemode="644" dirmode="755"> |
| <exclude name="bin/**"/> |
| <exclude name="**/*.class"/> |
| </zipfileset> |
| </zip> |
| </target> |
| |
| <target name="bundle" description="Build module osgi artifact. Override and depend on bundle-tasks to use"/> |
| |
| <target name="bundle-tasks" depends="jar"> |
| <taskdef resource="aQute/bnd/ant/taskdef.properties" classpath="${project.root}/${bnd}"/> |
| <echo message="Bundling ${build}/lib/${module.namever}.jar with ${module.src}/${module.name}.bnd"/> |
| <bnd |
| classpath="${build}/lib/${module.namever}.jar" |
| eclipse="false" |
| failok="false" |
| exceptions="true" |
| output="${build}/lib/${module.namever.osgi}.jar" |
| files="${module.src}/${module.name}.bnd"/> |
| </target> |
| |
| <target name="tar-release" depends="zip-release" description="build release archive"> |
| <tar destfile="${module.release.tar}" longfile="gnu" > |
| <zipfileset src="${module.release.zip}"/> |
| </tar> |
| </target> |
| |
| <target name="gzip-release" depends="tar-release" description="build release archive"> |
| <gzip src="${module.release.tar}" destfile="${module.release.tgz}"/> |
| </target> |
| |
| <target name="bzip2-release" depends="tar-release" description="build release archive"> |
| <bzip2 src="${module.release.tar}" destfile="${module.release.bz2}"/> |
| </target> |
| |
| <target name="doc-release" description="no-op override if a doc step is requried "/> |
| |
| |
| <target name="build-release-bin" depends="release-bin-prepare,libs-release,copy-bin-release, |
| copy-etc-release,doc-release,resources-release,release-bin-other,module-manifest" |
| description="Task that includes all tasks required to create a module binary release"/> |
| |
| <!-- ,zip-release,gzip-release --> |
| <target name="release-bin-tasks" depends="gzip-release" description="build all release archives except .bz2"/> |
| |
| <target name="release-bin-all-tasks" depends="bzip2-release" description="build all release archives"/> |
| |
| <!-- Dummy targets to no-op for most modules. Override if a module package is required --> |
| <target name="release-bin-other" description="Override if there is tasks required for the module bin release to occur last"/> |
| <target name="release-bin" description="Override and depend on release-bin-tasks to generate"/> |
| <target name="release-bin-all" description="Override and depend on release-bin-tasks to generate"/> |
| |
| <target name="clean" description="remove build artifacts"> |
| <delete dir="${module.build}"/> |
| <delete dir="${module.results}"/> |
| <delete dir="${module.release.base}"/> |
| <delete dir="${module.instrumented}"/> |
| </target> |
| |
| <target name="instrument" depends="cobertura-init"> |
| <cobertura-instrument todir="${module.instrumented}" |
| datafile="${cobertura.datafile}"> |
| <fileset dir="${module.classes}"> |
| <include name="**/*.class"/> |
| </fileset> |
| </cobertura-instrument> |
| </target> |
| |
| <target name="cover-test" depends="instrument" if="module.test.src.exists"> |
| |
| <junit fork="yes" forkmode="once" maxmemory="${test.mem}" reloading="no" |
| haltonfailure="${haltonfailure}" haltonerror="${haltonerror}" |
| failureproperty="test.failures" printsummary="on" timeout="600000" |
| dir="${project.root}" > |
| <jvmarg line="${jvm.args}" /> |
| |
| <syspropertyset refid="all.test.systemproperties"/> |
| |
| <sysproperty key="net.sourceforge.cobertura.datafile" file="${cobertura.datafile}" /> |
| |
| <formatter type="plain"/> |
| <formatter type="xml"/> |
| |
| <classpath path="${module.instrumented}"/> |
| <classpath> |
| <fileset dir="${build}"> |
| <include name="**/classes-instrumented/*.class"/> |
| </fileset> |
| </classpath> |
| <classpath refid="module.test.runtime.path"/> |
| <classpath refid="cobertura.classpath"/> |
| |
| <batchtest todir="${module.results}"> |
| <fileset dir="${module.test.src}" excludes="${module.test.excludes}"> |
| <include name="**/${test}.java"/> |
| </fileset> |
| </batchtest> |
| </junit> |
| </target> |
| |
| <target name="coverage-report" depends="cobertura-init"> |
| <cobertura-report format="html" |
| destdir="${module.coverage}" |
| datafile="${cobertura.datafile}"> |
| <fileset dir="${module.src}" includes="**/*.java" /> |
| </cobertura-report> |
| </target> |
| |
| <property name="version.file" location="${module.classes}/qpidversion.properties"/> |
| <property file="${version.file}" prefix="old."/> |
| |
| <target name="check-version"> |
| <exec executable="svnversion" spawn="false" failifexecutionfails="false" |
| dir="${project.root}" outputproperty="svnversion.output"> |
| <arg line="."/> |
| </exec> |
| <condition property="version.stale"> |
| <not> |
| <equals arg1="${svnversion.output}" arg2="${old.qpid.svnversion}"/> |
| </not> |
| </condition> |
| </target> |
| |
| <target name="create-version" depends="check-version" if="version.stale"> |
| <!-- Write the version.properties out.--> |
| <!-- Echos exactly as shown, so leave no spaces before/after lines --> |
| <echo file="${version.file}" append="false">qpid.version=${project.version} |
| qpid.svnversion=${svnversion.output} |
| qpid.name=${project.name} |
| </echo> |
| </target> |
| |
| <!-- Additions to perform LogMessage generation |
| To activate for your plugin add the following to your plugin build.xml |
| |
| <target name="precompile" depends="gen_logging"/> |
| |
| --> |
| |
| <property name="gentools.home" location="${project.root}/common/gentools" /> |
| <property name="gentools.build" location="${build.scratch}/common/gentools" /> |
| <property name="generated.dir" location="${module.precompiled}" /> |
| <property name="velocity.compile.dir" value="${build.scratch}/broker/velocity"/> |
| <property name="velocity.timestamp" location="${generated.dir}/velocity.timestamp" /> |
| |
| <target name="compile_velocity" > |
| <mkdir dir="${velocity.compile.dir}" /> |
| <!-- Compile LogMessages Velocity Generator --> |
| <javac source="${java.source}" target="${java.target}" |
| destdir="${velocity.compile.dir}" debug="on" includeantruntime="false" |
| deprecation="${javac.deprecation}" |
| srcdir="${project.root}/broker/src/velocity/java" > |
| <classpath> |
| <pathelement path="${project.root}/${velocity.jar}" /> |
| </classpath> |
| <compilerarg line="${javac.compiler.args}"/> |
| </javac> |
| </target> |
| |
| |
| <target name="check_velocity_deps"> |
| <uptodate property="velocity.notRequired" targetfile="${velocity.timestamp}"> |
| <srcfiles dir="${module.src}" includes="**/*_logmessages.properties" /> |
| <srcfiles dir="${project.root}/broker/src/velocity/" includes="**/*.java **/*.vm" /> |
| </uptodate> |
| </target> |
| |
| |
| <target name="gen_logging" depends="compile_velocity,check_velocity_deps" unless="velocity.notRequired"> |
| <mkdir dir="${generated.dir}"/> |
| |
| <path id="logmessages.path"> |
| <fileset dir="${module.src}"> |
| <include name="**/*_logmessages.properties"/> |
| </fileset> |
| </path> |
| |
| <pathconvert property="logmessages" |
| refid="logmessages.path" |
| pathsep="' '"/> |
| |
| <echo message="logmessages is ${logmessages}"/> |
| |
| <java classname="org.apache.qpid.server.logging.GenerateLogMessages" fork="true" dir="${gentools.build}/classes" failonerror="true"> |
| <arg line="'${logmessages}'"/> |
| <arg value="-j"/> |
| <arg value="-o"/> |
| <arg value="${generated.dir}"/> |
| <arg value="-t"/> |
| <arg value="${project.root}/broker/src/velocity/templates/org/apache/qpid/server/logging/messages"/> |
| <arg value="-s"/> |
| <arg value="${module.src}"/> |
| |
| |
| <classpath> |
| <pathelement path="${module.src}"/> |
| <pathelement path="${velocity.compile.dir}" /> |
| <fileset dir="${project.root}/lib/required"> |
| <include name="**/*.jar"/> |
| </fileset> |
| <pathelement path="${project.root}/${velocity.jar}" /> |
| </classpath> |
| </java> |
| <touch file="${velocity.timestamp}" /> |
| </target> |
| |
| <target name="eclipse" depends="eclipse-setup,eclipse-project,eclipse-source-only,eclipse-source-and-test"/> |
| |
| <target name="eclipse-setup"> |
| <taskdef name="eclipse" classname="prantl.ant.eclipse.EclipseTask" /> |
| |
| <!-- Build set of directories representing the dependencies --> |
| |
| <dirset id="eclipse.required.projectdirs.path" dir="${project.root}" includes="${module.depends} ${module.test.depends} neverBeEmpty"> |
| <!-- Select only those projects from module.depends that contain a build.xml. This serves to exclude dependencies that |
| don't become Eclipse projects e.g. broker-plugins and common-tests --> |
| <present targetdir="${project.root}"> |
| <mapper type="glob" from="*" to="*/build.xml"/> |
| </present> |
| </dirset> |
| |
| <!-- Convert from the set of directories into Eclipse project names proceeded by forward slashes --> |
| |
| <pathconvert property="eclipse.required.projectnames" refid="eclipse.required.projectdirs.path" pathsep=" " dirsep="-"> |
| <map from="${project.root}${file.separator}" to=''/> |
| </pathconvert> |
| <map property="eclipse.required.slashedprojectnames" value="${eclipse.required.projectnames}" join="${path.separator}"> |
| <globmapper from="*" to="/*${eclipse.project.suffix}"/> |
| </map> |
| |
| <echo message="Ant module dependencies : ${module.depends} ${module.test.depends} converted to Eclipse required project(s): ${eclipse.required.slashedprojectnames}"/> |
| <path id="eclipse.required.slashedprojectnames.path"> |
| <pathelement path="${eclipse.required.slashedprojectnames}"/> |
| </path> |
| </target> |
| |
| <!-- Create the Eclipse .project --> |
| <target name="eclipse-project"> |
| <eclipse updatealways="${eclipse.updatealways}"> |
| <project name="${module.name}${eclipse.project.suffix}"/> |
| |
| <!-- If the Eclipse task were to ever support the generation of |
| linked resources, we would configure it to generate |
| the following: |
| |
| scratch_src -> ${module.precompiled} |
| |
| in each project. This would avoid the 'linked sources' |
| manual step documented on the Wiki. |
| --> |
| </eclipse> |
| </target> |
| |
| <!-- Create the Eclipse .classpath --> |
| <target name="eclipse-source-only" unless="module.test.src.exists"> |
| <eclipse updatealways="${eclipse.updatealways}"> |
| <settings> |
| <jdtcore compilercompliance="${eclipse.compilercompliance}" /> |
| </settings> |
| <classpath> |
| <container path="${eclipse.container}" /> |
| <source path="${module.src}" /> |
| <source pathref="eclipse.required.slashedprojectnames.path" /> |
| <library pathref="module.libs"/> |
| <output path="classes" /> |
| </classpath> |
| </eclipse> |
| </target> |
| |
| <!-- Create the Eclipse .classpath --> |
| <target name="eclipse-source-and-test" if="module.test.src.exists"> |
| <eclipse updatealways="${eclipse.updatealways}"> |
| <settings> |
| <jdtcore compilercompliance="${eclipse.compilercompliance}" /> |
| </settings> |
| <classpath> |
| <container path="${eclipse.container}" /> |
| <source path="${module.src}" /> |
| <source path="${module.test.src}" /> |
| <source pathref="eclipse.required.slashedprojectnames.path" /> |
| <library pathref="module.libs"/> |
| <library pathref="module.test.libs"/> |
| <output path="classes" /> |
| </classpath> |
| </eclipse> |
| </target> |
| </project> |