| <?xml version="1.0"?> |
| |
| <!-- |
| 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="ZooKeeper" default="jar"> |
| |
| <property name="Name" value="ZooKeeper" /> |
| <property name="name" value="zookeeper" /> |
| |
| <property environment="env"/> |
| |
| <property name="version" value="3.0.1" /> |
| <property name="final.name" value="${name}-${version}"/> |
| <property name="revision.dir" value="${basedir}/.revision" /> |
| <property name="revision.properties" value="revision.properties" /> |
| <property file="${basedir}/src/java/${revision.properties}" /> |
| |
| <!-- Target JDK version to build for. Certain zookeeper features --> |
| <!-- (for example, JMX) are only supported on JDK 1.6 --> |
| <property name="target.jdk" value="${ant.java.version}" /> |
| |
| <property name="src.dir" value="${basedir}/src" /> |
| <property name="java.src.dir" value="${src.dir}/java/main" /> |
| <property name="jmx.src.dir" value="${src.dir}/java/jmx" /> |
| <property name="lib.dir" value="${src.dir}/java/lib" /> |
| <property name="build.dir" value="${basedir}/build" /> |
| <property name="distribution" value="${basedir}/distribution" /> |
| <property name="src_generated.dir" value="${src.dir}/java/generated" /> |
| <property name="c.src.dir" value="${src.dir}/c" /> |
| <property name="csrc_generated.dir" value="${c.src.dir}/generated" /> |
| <property name="build.classes" value="${build.dir}/classes" /> |
| <property name="jar.name" value="zookeeper-dev.jar" /> |
| |
| <property name="jute.file" value="${src.dir}/zookeeper.jute" /> |
| |
| <property name="build.testclasses" value="${build.dir}/testclasses"/> |
| <property name="test.build.dir" value="${build.dir}/test" /> |
| <property name="test.src.dir" value="${src.dir}/java/test"/> |
| <property name="test.log.dir" value="${test.build.dir}/logs" /> |
| <property name="test.data.dir" value="${test.build.dir}/data" /> |
| <property name="test.data.upgrade.dir" value="${test.data.dir}/upgrade" /> |
| <property name="test.tmp.dir" value="${test.build.dir}/tmp" /> |
| <property name="test.output" value="no" /> |
| <property name="test.timeout" value="900000" /> |
| <property name="test.junit.output.format" value="plain" /> |
| <property name="test.junit.fork.mode" value="perTest" /> |
| <property name="test.junit.printsummary" value="yes" /> |
| <property name="test.junit.haltonfailure" value="no" /> |
| <property name="config.dir" value="${src.dir}/java/test/config" /> |
| <property name="test.junit.maxmem" value="512m" /> |
| <property name="conf.dir" value="${basedir}/conf"/> |
| <property name="docs.dir" value="${basedir}/docs"/> |
| <property name="docs.src" value="${basedir}/src/docs"/> |
| <property name="javadoc.link.java" |
| value="http://java.sun.com/j2se/1.5/docs/api/" /> |
| <property name="javadoc.packages" value="org.apache.*" /> |
| |
| <property name="build.docs" value="${build.dir}/docs" /> |
| <property name="build.javadoc" value="${build.docs}/api" /> |
| <property name="build.javadoc.dev" value="${build.docs}/dev-api"/> |
| |
| <property name="dist.dir" value="${build.dir}/${final.name}"/> |
| |
| <property name="clover.home" location="${env.CLOVER_HOME}"/> |
| <property name="clover.jar" location="${clover.home}/lib/clover.jar" /> |
| <property name="clover.db.dir" location="${test.build.dir}/clover/db"/> |
| <property name="clover.report.dir" |
| location="${test.build.dir}/clover/reports"/> |
| |
| <property name="contrib.dir" value="${src.dir}/contrib"/> |
| |
| <available property="clover.present" |
| classname="com.cenqua.clover.CloverInstr" |
| classpath="${clover.home}/lib/clover.jar"/> |
| |
| <available file="${c.src.dir}/Makefile" property="Makefile.present"/> |
| |
| <!-- check if clover reports should be generated --> |
| <condition property="clover.enabled"> |
| <and> |
| <isset property="run.clover"/> |
| <isset property="clover.present"/> |
| </and> |
| </condition> |
| |
| |
| <property name="test.cobertura.output.format" value="html" /> |
| <property name="coveragereport.dir" value="${build.dir}/cobertura" /> |
| |
| <!-- ====================================================== --> |
| <!-- Macro definitions --> |
| <!-- ====================================================== --> |
| <macrodef name="macro_tar" description="Worker Macro for tar"> |
| <attribute name="param.destfile"/> |
| <element name="param.listofitems"/> |
| <sequential> |
| <tar compression="gzip" longfile="gnu" |
| destfile="@{param.destfile}"> |
| <param.listofitems/> |
| </tar> |
| </sequential> |
| </macrodef> |
| |
| <!-- ====================================================== --> |
| <!-- Generate and compile the Java files --> |
| <!-- ====================================================== --> |
| <target name="init"> |
| <mkdir dir="${build.classes}" /> |
| <tstamp> |
| <format property="build.time" pattern="MM/dd/yyyy HH:mm zz" timezone="GMT"/> |
| <format property="year" pattern="yyyy" timezone="GMT"/> |
| </tstamp> |
| <condition property="extra.src.dir" value="${jmx.src.dir}"> |
| <and> |
| <equals arg1="${target.jdk}" arg2="1.6"/> |
| <available file="${jmx.src.dir}" type="dir"/> |
| </and> |
| </condition> |
| <path id="project.classpath"> |
| <fileset dir="${build.classes}" /> |
| <pathelement path="${lib.dir}/log4j-1.2.15.jar" /> |
| <pathelement path="${clover.jar}" /> |
| </path> |
| </target> |
| |
| <target name="jute" depends="init"> |
| <javac srcdir="${java.src.dir}" destdir="${build.classes}" target="${target.jdk}" |
| includes="org/apache/jute/**" debug="on" /> |
| </target> |
| |
| <target name="compile_jute_uptodate"> |
| <uptodate property="juteBuild.notRequired" |
| srcfile="${jute.file}" |
| targetfile="${src_generated.dir}/.generated"/> |
| </target> |
| |
| <target name="compile_jute" depends="jute,compile_jute_uptodate" unless="juteBuild.notRequired"> |
| <mkdir dir="${src_generated.dir}" /> |
| <mkdir dir="${csrc_generated.dir}" /> |
| <java classname="org.apache.jute.compiler.generated.Rcc" fork="true" dir="${src_generated.dir}"> |
| <arg value="-l" /> |
| <arg value="java" /> |
| <arg value="../../zookeeper.jute" /> |
| <classpath> |
| <pathelement path="${build.classes}" /> |
| </classpath> |
| </java> |
| |
| <java classname="org.apache.jute.compiler.generated.Rcc" fork="true" dir="${csrc_generated.dir}"> |
| <arg value="-l" /> |
| <arg value="c" /> |
| <arg value="../../zookeeper.jute" /> |
| <classpath> |
| <pathelement path="${build.classes}" /> |
| </classpath> |
| </java> |
| |
| <touch file="${src_generated.dir}/.generated"/> |
| </target> |
| |
| <target name="ver-gen" depends="init"> |
| <javac srcdir="${java.src.dir}" destdir="${build.classes}" target="${target.jdk}" |
| includes="org/apache/zookeeper/version/util/**" debug="on" /> |
| </target> |
| |
| <target name="svn-revision" unless="lastRevision"> |
| <mkdir dir="${revision.dir}" /> |
| <condition property="shell.name" value="cmd" else="sh"> |
| <os family="windows"/> |
| </condition> |
| <condition property="revision.cmd.line" |
| value="/c ${src.dir}\lastRevision.bat" else="${src.dir}/lastRevision.sh"> |
| <os family="windows"/> |
| </condition> |
| <exec executable="${shell.name}"> |
| <arg line="${revision.cmd.line} ${revision.dir}${file.separator}${revision.properties}"/> |
| </exec> |
| <property file="${revision.dir}/${revision.properties}" /> |
| </target> |
| |
| <target name="version-info" depends="ver-gen,svn-revision"> |
| <mkdir dir="${src_generated.dir}" /> |
| <java classname="org.apache.zookeeper.version.util.VerGen" fork="true" |
| dir="${src_generated.dir}"> |
| <arg value="${version}" /> |
| <arg value="${lastRevision}" /> |
| <arg value="${build.time}" /> |
| <classpath> |
| <pathelement path="${build.classes}" /> |
| </classpath> |
| </java> |
| </target> |
| |
| <target name="build-generated" depends="compile_jute,version-info" > |
| <javac srcdir="${src_generated.dir}" destdir="${build.classes}" |
| target="${target.jdk}" debug="on" /> |
| </target> |
| |
| <target name="compile-extra" depends="compile-main" if="extra.src.dir"> |
| <javac srcdir="${extra.src.dir}" destdir="${build.classes}" |
| target="${target.jdk}" debug="on"> |
| <classpath refid="project.classpath"/> |
| </javac> |
| <copy todir="${build.classes}"> |
| <fileset dir="${extra.src.dir}"/> |
| </copy> |
| </target> |
| |
| <target name="compile-main" depends="build-generated"> |
| <javac srcdir="${java.src.dir}" destdir="${build.classes}" |
| target="${target.jdk}" debug="on"> |
| <classpath refid="project.classpath"/> |
| </javac> |
| <copy todir="${build.classes}"> |
| <fileset dir="${java.src.dir}"/> |
| <fileset dir="${src_generated.dir}"/> |
| </copy> |
| </target> |
| |
| <target name="compile" depends="clover,compile-main,compile-extra"/> |
| |
| <target name="test-classpath"> |
| <path id="test.classpath"> |
| <fileset dir="${basedir}"> |
| <include name="*.jar"/> |
| </fileset> |
| <fileset dir="${lib.dir}"> |
| <include name="*.jar"/> |
| </fileset> |
| <pathelement path="${clover.jar}" /> |
| </path> |
| </target> |
| |
| <target name="compile-test" depends="jar,test-classpath"> |
| <mkdir dir="${build.testclasses}"/> |
| <javac srcdir="${test.src.dir}" destdir="${build.testclasses}" |
| target="${target.jdk}" debug="on"> |
| <classpath refid="test.classpath"/> |
| </javac> |
| </target> |
| |
| <!-- ====================================================== --> |
| <!-- Documentation --> |
| <!-- ====================================================== --> |
| <target name="docs" depends="forrest.check" description="Generate forrest-based documentation. To use, specify -Dforrest.home=<base of Apache Forrest installation> on the command line." if="forrest.home"> |
| <condition property="forrest.exec" value="forrest.bat" else="forrest"> |
| <os family="windows"/> |
| </condition> |
| <exec dir="${docs.src}" executable="${forrest.home}/bin/forrest" |
| failonerror="true"> |
| <env key="JAVA_HOME" value="${java5.home}"/> |
| </exec> |
| <copy todir="${docs.dir}"> |
| <fileset dir="${docs.src}/build/site/" /> |
| </copy> |
| <style basedir="${conf.dir}" destdir="${docs.dir}" |
| includes="zookeeper-default.xml" style="conf/configuration.xsl"/> |
| </target> |
| |
| <target name="forrest.check" unless="forrest.home" depends="java5.check"> |
| <fail message="'forrest.home' is not defined. Please pass -Dforrest.home=<base of Apache Forrest installation> to Ant on the command-line." /> |
| </target> |
| |
| <target name="java5.check" unless="java5.home"> |
| <fail message="'java5.home' is not defined. Forrest requires Java 5. Please pass -Djava5.home=<base of Java 5 distribution> to Ant on the command-line." /> |
| </target> |
| |
| <!-- Javadoc --> |
| <target name="javadoc-dev" depends="compile" |
| description="Generate javadoc for zookeeper developers"> |
| <mkdir dir="${build.javadoc.dev}"/> |
| <javadoc |
| overview="${java.src.dir}/overview.html" |
| packagenames="org.apache.zookeeper.*" |
| destdir="${build.javadoc.dev}" |
| author="true" |
| version="true" |
| use="true" |
| windowtitle="${Name} ${version} API" |
| doctitle="${Name} ${version} API" |
| bottom="Copyright &copy; ${year} The Apache Software Foundation" |
| > |
| <packageset dir="${java.src.dir}"> |
| <include name="org/apache/**"/> |
| <exclude name="org/apache/jute/**"/> |
| </packageset> |
| <packageset dir="${src_generated.dir}"/> |
| <link href="${javadoc.link.java}"/> |
| <classpath refid="project.classpath"/> |
| </javadoc> |
| </target> |
| |
| <target name="javadoc" depends="compile" description="Generate javadoc"> |
| <mkdir dir="${build.javadoc}"/> |
| <javadoc |
| overview="${java.src.dir}/overview.html" |
| packagenames="org.apache.zookeeper.*" |
| destdir="${build.javadoc}" |
| author="true" |
| version="true" |
| use="true" |
| Public="yes" |
| windowtitle="${Name} ${version} API" |
| doctitle="${Name} ${version} API" |
| bottom="Copyright &copy; ${year} The Apache Software Foundation" |
| > |
| <fileset dir="${java.src.dir}"> |
| <include name="org/apache/**/*Main.java"/> |
| <include name="org/apache/zookeeper/AsyncCallback.java"/> |
| <include name="org/apache/zookeeper/CreateMode.java"/> |
| <include name="org/apache/zookeeper/KeeperException.java"/> |
| <include name="org/apache/zookeeper/ServerAdminClient.java"/> |
| <include name="org/apache/zookeeper/Watcher.java"/> |
| <include name="org/apache/zookeeper/ZooDefs.java"/> |
| <include name="org/apache/zookeeper/ZooKeeper.java"/> |
| <exclude name="org/apache/zookeeper/server/quorum/QuorumPacket"/> |
| </fileset> |
| <packageset dir="${src_generated.dir}"> |
| <exclude name="org/apache/zookeeper/proto"/> |
| <exclude name="org/apache/zookeeper/txn"/> |
| <exclude name="org/apache/zookeeper/version"/> |
| <exclude name="org/apache/zookeeper/server/**"/> |
| </packageset> |
| <link href="${javadoc.link.java}"/> |
| <classpath refid="project.classpath"/> |
| </javadoc> |
| </target> |
| |
| <!-- ====================================================== --> |
| <!-- Make zookeeper.jar --> |
| <!-- ====================================================== --> |
| <target name="jar" depends="compile"> |
| <java classname="org.apache.zookeeper.Version" fork="true" |
| outputproperty="revision" failonerror="true"> |
| <arg value="--revision" /> |
| <classpath> |
| <pathelement path="${build.classes}" /> |
| <pathelement path="${clover.jar}" /> |
| </classpath> |
| </java> |
| <exec executable="hostname" outputproperty="host.name"/> |
| <jar jarfile="${jar.name}"> |
| <fileset file="LICENSE" /> |
| <fileset dir="${build.classes}" excludes="**/.generated"/> |
| <manifest> |
| <attribute name="Main-Class" value="org.apache.zookeeper.server.quorum.QuorumPeer" /> |
| <attribute name="Built-By" value="${user.name}"/> |
| <attribute name="Built-At" value="${build.time}"/> |
| <attribute name="Built-On" value="${host.name}" /> |
| <attribute name="Implementation-Title" value="org.apache.zookeeper"/> |
| <attribute name="Implementation-Version" value="${revision}"/> |
| <attribute name="Implementation-Vendor" value="The Apache Software Foundation"/> |
| </manifest> |
| </jar> |
| </target> |
| |
| <target name="release-jar"> |
| <antcall target="jar"> |
| <param name="jar.name" value="${build.dir}/${final.name}.jar" /> |
| </antcall> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- D I S T R I B U T I O N --> |
| <!-- ================================================================== --> |
| <!-- --> |
| <!-- ================================================================== --> |
| <target name="package" depends="release-jar, javadoc" |
| description="Build distribution"> |
| <mkdir dir="${dist.dir}"/> |
| <mkdir dir="${dist.dir}/lib"/> |
| <mkdir dir="${dist.dir}/contrib"/> |
| <mkdir dir="${dist.dir}/bin"/> |
| <mkdir dir="${dist.dir}/docs"/> |
| <mkdir dir="${dist.dir}/docs/api"/> |
| |
| <copy todir="${dist.dir}/lib" includeEmptyDirs="false"> |
| <fileset dir="${lib.dir}"/> |
| </copy> |
| |
| <subant target="package"> |
| <!--Pass down the version in case its needed again and the target |
| distribution directory so contribs know where to install to.--> |
| <property name="version" value="${version}"/> |
| <property name="dist.dir" value="${dist.dir}"/> |
| <fileset file="${contrib.dir}/build.xml"/> |
| </subant> |
| |
| <copy todir="${dist.dir}"> |
| <fileset file="${build.dir}/${final.name}.jar"/> |
| </copy> |
| |
| <copy todir="${dist.dir}/bin"> |
| <fileset dir="bin"/> |
| </copy> |
| |
| <copy todir="${dist.dir}/conf"> |
| <fileset dir="${conf.dir}" excludes="**/*.template"/> |
| </copy> |
| |
| <copy todir="${dist.dir}/docs"> |
| <fileset dir="${docs.dir}" /> |
| <fileset dir="${build.docs}"/> |
| </copy> |
| |
| <copy todir="${dist.dir}"> |
| <fileset dir="."> |
| <include name="*.txt" /> |
| </fileset> |
| </copy> |
| |
| <copy todir="${dist.dir}/src" includeEmptyDirs="true"> |
| <fileset dir="src" excludes="**/*.template **/docs/build/**/*"/> |
| </copy> |
| |
| <copy todir="${dist.dir}/" file="build.xml"/> |
| |
| <chmod perm="ugo+x" type="file" parallel="false"> |
| <fileset dir="${dist.dir}/bin"/> |
| <fileset dir="${dist.dir}/src/contrib/"> |
| <include name="*/bin/*" /> |
| </fileset> |
| </chmod> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Make release tarball --> |
| <!-- ================================================================== --> |
| <target name="tar" depends="package" description="Make release tarball"> |
| <macro_tar param.destfile="${build.dir}/${final.name}.tar.gz"> |
| <param.listofitems> |
| <tarfileset dir="${build.dir}" mode="664"> |
| <exclude name="${final.name}/bin/*" /> |
| <exclude name="${final.name}/contrib/*/bin/*" /> |
| <include name="${final.name}/**" /> |
| </tarfileset> |
| <tarfileset dir="${build.dir}" mode="755"> |
| <include name="${final.name}/bin/*" /> |
| <include name="${final.name}/contrib/*/bin/*" /> |
| </tarfileset> |
| </param.listofitems> |
| </macro_tar> |
| </target> |
| |
| <target name="binary" depends="package" |
| description="Make tarball without source and documentation"> |
| <macro_tar param.destfile="${build.dir}/${final.name}-bin.tar.gz"> |
| <param.listofitems> |
| <tarfileset dir="${build.dir}" mode="664"> |
| <include name="${final.name}/src/c/**" /> |
| <exclude name="${final.name}/src/c/generated/**" /> |
| </tarfileset> |
| <tarfileset dir="${build.dir}" mode="664"> |
| <exclude name="${final.name}/bin/*" /> |
| <exclude name="${final.name}/src/**" /> |
| <exclude name="${final.name}/docs/**" /> |
| <include name="${final.name}/**" /> |
| </tarfileset> |
| <tarfileset dir="${build.dir}" mode="755"> |
| <include name="${final.name}/bin/*" /> |
| </tarfileset> |
| </param.listofitems> |
| </macro_tar> |
| </target> |
| |
| <!-- ====================================================== --> |
| <!-- Clean. Delete the build files, and their directories --> |
| <!-- ====================================================== --> |
| <target name="clean" depends="clean-contrib" |
| description="Clean. Delete the build files, and their directories"> |
| <delete dir="${build.dir}"/> |
| <delete dir="${docs.src}/build"/> |
| <delete dir="${src_generated.dir}" /> |
| <delete dir="${csrc_generated.dir}" /> |
| <delete file="${jar.name}" /> |
| <delete dir="${distribution}"/> |
| <delete dir="${revision.dir}"/> |
| <delete> |
| <fileset dir="${basedir}" includes="*.jar,*.tar.gz"/> |
| </delete> |
| </target> |
| |
| <target name="clean-contrib"> |
| <subant target="clean"> |
| <fileset file="${contrib.dir}/build.xml"/> |
| </subant> |
| </target> |
| |
| <!-- ====================================================== --> |
| <!-- Run unit tests --> |
| <!-- ====================================================== --> |
| <target name="test-init" depends="jar,compile-test"> |
| <delete dir="${test.log.dir}" /> |
| <delete dir="${test.tmp.dir}" /> |
| <delete dir="${test.data.upgrade.dir}" /> |
| <delete dir="${test.data.dir}" /> |
| <mkdir dir="${test.log.dir}" /> |
| <mkdir dir="${test.tmp.dir}" /> |
| <mkdir dir="${test.data.dir}" /> |
| <mkdir dir="${test.data.upgrade.dir}" /> |
| <copy todir="${test.data.upgrade.dir}"> |
| <fileset dir="${basedir}/src/java/test/data/upgrade"/> |
| </copy> |
| </target> |
| |
| <target name="junit.run"> |
| <junit showoutput="${test.output}" |
| printsummary="${test.junit.printsummary}" |
| haltonfailure="${test.junit.haltonfailure}" |
| fork="yes" |
| forkmode="${test.junit.fork.mode}" |
| maxmemory="${test.junit.maxmem}" |
| dir="${basedir}" timeout="${test.timeout}" |
| errorProperty="tests.failed" failureProperty="tests.failed"> |
| <sysproperty key="build.test.dir" value="${test.tmp.dir}" /> |
| <sysproperty key="test.data.dir" value="${test.data.dir}" /> |
| <sysproperty key="log4j.configuration" |
| value="file:${basedir}/conf/log4j.properties" /> |
| <classpath refid="test.classpath"/> |
| <classpath> |
| <pathelement path="${build.testclasses}" /> |
| </classpath> |
| <formatter type="${test.junit.output.format}" /> |
| <batchtest todir="${test.log.dir}" unless="testcase"> |
| <fileset dir="${test.src.dir}" |
| includes="**/*${test.category}Test.java"/> |
| </batchtest> |
| <batchtest todir="${test.log.dir}" if="testcase"> |
| <fileset dir="${test.src.dir}" includes="**/${testcase}.java"/> |
| </batchtest> |
| </junit> |
| <fail if="tests.failed">Tests failed!</fail> |
| </target> |
| |
| |
| <target name="test-unit-category"> |
| <property name="test.category" value="Unit"/> |
| </target> |
| <target name="test-unit" depends="test-init,test-unit-category,junit.run"/> |
| |
| <target name="test-func-category"> |
| <property name="test.category" value="Func"/> |
| </target> |
| <target name="test-func" depends="test-init,test-func-category,junit.run"/> |
| |
| <target name="test-perf-category"> |
| <property name="test.category" value="Perf"/> |
| </target> |
| <target name="test-perf" depends="test-init,test-perf-category,junit.run"/> |
| |
| <target name="test-category"> |
| <property name="test.category" value=""/> |
| </target> |
| <target name="test" depends="test-init,test-category,junit.run"/> |
| |
| <!-- ====================================================== --> |
| <!-- Run optional third-party tool targets --> |
| <!-- ====================================================== --> |
| |
| <!-- clover code coverage --> |
| <target name="clover" depends="clover.setup, clover.info" |
| description="Instrument the Unit tests using Clover. Requires a Clover license and CLOVER_HOME environment variable set appropriately. To use, specify -Drun.clover=true on the command line."/> |
| |
| <target name="clover.setup" if="clover.enabled"> |
| <taskdef resource="cloverlib.xml" classpath="${clover.jar}"/> |
| <mkdir dir="${clover.db.dir}"/> |
| <clover-setup initString="${clover.db.dir}/zookeeper_coverage.db"> |
| <fileset dir="${java.src.dir}" |
| includes="org/apache/zookeeper/**/*" |
| excludes="org/apache/zookeeper/version/**/*"/> |
| </clover-setup> |
| </target> |
| |
| <target name="clover.info" if="run.clover" unless="clover.present"> |
| <echo> |
| Clover not found. Code coverage reports disabled. |
| </echo> |
| </target> |
| |
| <target name="clover.check"> |
| <fail unless="clover.present"> |
| ################################################################## |
| Clover not found. |
| Please make sure clover.jar is in ANT_HOME/lib, or made available |
| to Ant using other mechanisms like -lib or CLASSPATH. |
| ################################################################## |
| </fail> |
| </target> |
| |
| <target name="generate-clover-reports" depends="clover.check, clover"> |
| <mkdir dir="${clover.report.dir}"/> |
| <clover-report> |
| <current outfile="${clover.report.dir}" title="${final.name}"> |
| <format type="html"/> |
| </current> |
| </clover-report> |
| <clover-report> |
| <current outfile="${clover.report.dir}/clover.xml" title="${final.name}"> |
| <format type="xml"/> |
| </current> |
| </clover-report> |
| </target> |
| |
| <!-- Run with 'ant -Dfindbugs.home="path to Findbugs directory" findbugs --> |
| <property name="findbugs.home" value="" /> |
| <target name="findbugs" depends="check-for-findbugs, jar" if="findbugs.present"> |
| <property name="findbugs.out.dir" value="${test.build.dir}/findbugs" /> |
| <property name="findbugs.exclude.file" value="${config.dir}/findbugsExcludeFile.xml" /> |
| <property name="findbugs.report.htmlfile" value="${findbugs.out.dir}/zookeeper-findbugs-report.html" /> |
| <property name="findbugs.report.xmlfile" value="${findbugs.out.dir}/zookeeper-findbugs-report.xml" /> |
| <taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" |
| classpath="${findbugs.home}/lib/findbugs-ant.jar" /> |
| <mkdir dir="${findbugs.out.dir}" /> |
| <findbugs home="${findbugs.home}" output="xml:withMessages" excludeFilter="${findbugs.exclude.file}" |
| outputFile="${findbugs.report.xmlfile}" effort="max" jvmargs="-Xmx512M"> |
| <auxClasspath path="${lib.dir}/log4j-1.2.15.jar" /> |
| <sourcePath path="${java.src.dir}" /> |
| <class location="${basedir}/${jar.name}" /> |
| </findbugs> |
| <xslt style="${findbugs.home}/src/xsl/default.xsl" in="${findbugs.report.xmlfile}" |
| out="${findbugs.report.htmlfile}" /> |
| </target> |
| |
| <target name="check-for-findbugs"> |
| <available property="findbugs.present" file="${findbugs.home}/lib/findbugs.jar" /> |
| </target> |
| |
| <!-- Code coverage --> |
| <target name="cobertura-instrument" depends="compile-test"> |
| <taskdef resource="tasks.properties"> |
| <classpath> |
| <pathelement path="${lib.dir}/cobertura/cobertura.jar" /> |
| <fileset dir="${lib.dir}/cobertura/lib"> |
| <include name="*.jar"/> |
| </fileset> |
| <fileset dir="${lib.dir}"> |
| <include name="*.jar"/> |
| </fileset> |
| </classpath> |
| </taskdef> |
| |
| <cobertura-instrument todir="${build.dir}/cobertura"> |
| <fileset dir="${build.classes}"> |
| <include name="org/apache/zookeeper/**/*.class"/> |
| </fileset> |
| </cobertura-instrument> |
| </target> |
| |
| <target name="cobertura-test" depends="test-init,cobertura-instrument"> |
| <junit showoutput="${test.output}" printsummary="yes" haltonfailure="no" fork="yes" |
| maxmemory="${test.junit.maxmem}" dir="${basedir}" timeout="${test.timeout}" |
| errorProperty="tests.failed" failureProperty="tests.failed"> |
| <sysproperty key="build.test.dir" value="${test.tmp.dir}" /> |
| <sysproperty key="test.data.dir" value="${test.data.dir}" /> |
| <sysproperty key="log4j.configuration" |
| value="file:${basedir}/conf/log4j.properties" /> |
| <classpath> |
| <pathelement path="${build.dir}/cobertura" /> |
| <pathelement path="${lib.dir}/cobertura/cobertura.jar" /> |
| <fileset dir="${lib.dir}/cobertura/lib"> |
| <include name="*.jar"/> |
| </fileset> |
| <fileset dir="${lib.dir}"> |
| <include name="*.jar"/> |
| </fileset> |
| </classpath> |
| <classpath> |
| <pathelement path="${build.testclasses}" /> |
| </classpath> |
| <classpath refid="test.classpath"/> |
| <classpath> |
| <pathelement path="${build.classes}" /> |
| </classpath> |
| |
| <formatter type="${test.junit.output.format}" /> |
| <batchtest todir="${test.log.dir}" unless="testcase"> |
| <fileset dir="${test.src.dir}" |
| includes="**/*Test.java"/> |
| </batchtest> |
| <batchtest todir="${test.log.dir}" if="testcase"> |
| <fileset dir="${test.src.dir}" includes="**/${testcase}.java"/> |
| </batchtest> |
| </junit> |
| <fail if="tests.failed">Tests failed!</fail> |
| </target> |
| |
| <target name="cobertura-report" depends="cobertura-test"> |
| <cobertura-report format="${test.cobertura.output.format}" |
| destdir="${coveragereport.dir}" > |
| <fileset dir="${java.src.dir}"> |
| <include name="**/*.java" /> |
| </fileset> |
| <fileset dir="${src_generated.dir}"> |
| <include name="**/*.java" /> |
| </fileset> |
| </cobertura-report> |
| </target> |
| |
| </project> |