12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003 |
- <?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"
- xmlns:ivy="antlib:org.apache.ivy.ant"
- xmlns:artifact="antlib:org.apache.maven.artifact.ant"
- xmlns:maven="antlib:org.apache.maven.artifact.ant"
- xmlns:cs="antlib:com.puppycrawl.tools.checkstyle.ant">
- <!-- ====================================================== -->
- <!-- Dependency versions -->
- <!-- ====================================================== -->
- <property name="slf4j.version" value="1.7.25"/>
- <property name="commons-cli.version" value="1.2"/>
- <property name="spotbugsannotations.version" value="3.1.9"/>
- <property name="wagon-http.version" value="2.4"/>
- <property name="maven-ant-tasks.version" value="2.1.3"/>
- <property name="log4j.version" value="1.2.17"/>
- <property name="jline.version" value="2.11"/>
- <property name="audience-annotations.version" value="0.5.0" />
- <property name="netty.version" value="4.1.42.Final"/>
- <property name="junit.version" value="4.12"/>
- <property name="mockito.version" value="2.27.0"/>
- <property name="checkstyle.version" value="7.1.2"/>
- <property name="commons-collections.version" value="3.2.2"/>
- <property name="bouncycastle.version" value="1.60"/>
- <property name="jdiff.version" value="1.0.9"/>
- <property name="xerces.version" value="1.4.4"/>
- <property name="apache-rat-tasks.version" value="0.10"/>
- <property name="commons-lang.version" value="2.6"/>
- <property name="javacc.version" value="5.0"/>
- <property name="jetty.version" value="9.4.18.v20190429"/>
- <property name="jackson.version" value="2.9.10"/>
- <property name="dependency-check-ant.version" value="4.0.2"/>
- <property name="commons-io.version" value="2.6"/>
- <property name="kerby.version" value="1.1.0"/>
- <property name="clover.version" value="4.2.1" />
- <property name="snappy.version" value="1.1.7"/>
- <property name="json.version" value="1.1.1"/>
- <!-- ====================================================== -->
- <!-- Project properties -->
- <!-- ====================================================== -->
- <!-- read build.properties from the basedir if any -->
- <property file="${basedir}/build.properties" />
- <property name="Name" value="ZooKeeper" />
- <property name="name" value="zookeeper" />
- <property environment="env"/>
- <property name="version-major" value="3" />
- <property name="version-minor" value="6" />
- <property name="version-patch" value="0" />
- <property name="version-base" value="${version-major}.${version-minor}.${version-patch}" />
- <property name="version-suffix" value="SNAPSHOT" />
- <property name="version" value="${version-base}-${version-suffix}" />
- <property name="final.name" value="${name}-${version}"/>
- <property name="revision.dir" value="${basedir}/.revision" />
- <property name="revision.properties" value="revision.properties" />
- <property file="${basedir}/.revision/${revision.properties}" />
- <property name="javac.target" value="1.8" />
- <property name="javac.source" value="1.8" />
- <property name="build.encoding" value="utf8" />
- <property name="src.dir" value="${basedir}/src" />
- <property name="java.server.src.dir" value="${basedir}/zookeeper-server/src/main/java" />
- <property name="java.server.resources.dir" value="${basedir}/zookeeper-server/src/main/resources" />
- <property name="jute.src.dir" value="${basedir}/zookeeper-jute/src/main/java" />
- <property name="java.test.dir" value="${src.dir}/test/java"/>
- <property name="lib.dir" value="${java.server.resources.dir}/lib" />
- <property name="lib.dir.includes" value="**/*.jar" />
- <property name="lib.dir.excludes" value="**/excluded/" />
- <!-- prior to ant 1.7.1 fileset always fails if dir doesn't exist
- so just point to bin directory and provide settings that exclude
- everything - user can change as appropriate -->
- <property name="additional.lib.dir" value="bin" />
- <property name="additional.lib.dir.includes" value="**/*.jar" />
- <property name="additional.lib.dir.excludes" value="**/*.jar" />
- <property name="build.dir" value="${basedir}/build" />
- <property name="distribution" value="${basedir}/distribution" />
- <property name="src_generated.dir" value="${basedir}/zookeeper-jute/target/main/java" />
- <property name="src_version_generated.dir" value="${basedir}/zookeeper-server/target/generated-sources/java" />
- <property name="c.src.dir" value="${basedir}/zookeeper-client/zookeeper-client-c" />
- <property name="csrc_generated.dir" value="${c.src.dir}/generated" />
- <property name="jute.file" value="${basedir}/zookeeper-jute/src/main/resources/zookeeper.jute" />
- <property name="build.classes" value="${build.dir}/classes"/>
- <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="test.java.build.dir" value="${build.dir}/test"/>
- <property name="test.java.classes" value="${test.java.build.dir}/classes"/>
- <property name="java.server.test.dir" value="${basedir}/zookeeper-server/src/test/java"/>
- <property name="server.test.resource.dir" value="${basedir}/zookeeper-server/src/test/resources"/>
- <property name="jute.test.src.dir" value="${basedir}/zookeeper-jute/src/test/java" />
- <property name="systest.src.dir" value="${basedir}/zookeeper-it/src/test/java"/>
- <property name="bench.src.dir" value="${basedir}/zookeeper-it/src/test/bench"/>
- <property name="test.log.dir" value="${test.java.build.dir}/logs" />
- <property name="test.data.dir" value="${test.java.build.dir}/data" />
- <property name="test.data.invalid.dir" value="${test.data.dir}/invalidsnap" />
- <property name="test.data.buffersize.dir" value="${test.data.dir}/buffersize" />
- <property name="test.data.kerberos.dir" value="${test.data.dir}/kerberos" />
- <property name="test.data.ssl.dir" value="${test.data.dir}/ssl" />
- <property name="test.cppunit.dir" value="${test.java.build.dir}/test-cppunit"/>
- <property name="test.tmp.dir" value="${test.java.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.threads" value="1" />
- <property name="test.junit.printsummary" value="yes" />
- <property name="test.junit.haltonfailure" value="no" />
- <property name="test.junit.failbuild.ontestfailure" value="true" />
- <property name="test.junit.maxmem" value="512m" />
- <property name="test.quick" value="no" />
- <property name="conf.dir" value="${basedir}/conf"/>
- <property name="docs.dir" value="${basedir}/docs"/>
- <property name="docs.src" value="${basedir}/zookeeper-docs"/>
- <property name="javadoc.link.java"
- value="http://docs.oracle.com/javase/6/docs/api/" />
- <property name="javadoc.packages" value="org.apache.*" />
- <property name="dist.dir" value="${build.dir}/${final.name}"/>
- <property name="dist.maven.dir" value="${dist.dir}/dist-maven"/>
- <property name="contrib.dir" value="${basedir}/zookeeper-contrib"/>
- <property name="recipes.dir" value="${basedir}/zookeeper-recipes"/>
- <property name="ivy.version" value="2.5.0-rc1"/>
- <property name="ivy.url"
- value="https://repo1.maven.org/maven2/org/apache/ivy/ivy" />
- <property name="ivy.home" value="${user.home}/.ant" />
- <property name="ivy.lib" value="${build.dir}/lib"/>
- <property name="ivy.package.lib" value="${build.dir}/package/lib"/>
- <property name="ivy.test.lib" value="${build.dir}/test/lib"/>
- <property name="ivy.jdiff.lib" value="${build.dir}/jdiff/lib"/>
- <property name="ivy.javacc.lib" value="${build.dir}/javacc/lib"/>
- <property name="ivy.releaseaudit.lib" value="${build.dir}/releaseaudit/lib"/>
- <property name="ivy.owasp.lib" value="${build.dir}/owasp/lib"/>
- <property name="ivy.clover.lib" value="${build.dir}/clover/lib"/>
- <property name="ivysettings.xml" value="${basedir}/ivysettings.xml"/>
- <property name="mvnrepo" value="https://repo1.maven.org/maven2"/>
- <property name="tsk.org" value="/org/apache/maven/maven-ant-tasks/"/>
- <property name="ant-task.version" value="2.1.3"/>
- <property name="ant_task_repo_url"
- value="${mvnrepo}${tsk.org}${ant-task.version}/maven-ant-tasks-${ant-task.version}.jar"/>
- <property name="ant_task.jar" location="${ivy.lib}/maven-ant-tasks-${ant-task.version}.jar"/>
- <!-- clover property set -->
- <property name="clover.home" location="${build.dir}/clover"/>
- <property name="clover.jar" location="${clover.home}/lib/clover-${clover.version}.jar"/>
- <property name="clover.dest" location="${build.dir}/clover"/>
- <property name="clover.db.dir" location="${clover.dest}/db"/>
- <property name="clover.report.dir" location="${clover.dest}/reports"/>
- <property name="clover.db" location="${clover.db.dir}/zookeeper-coverage.db"/>
- <available file="${c.src.dir}/Makefile" property="Makefile.present"/>
- <property name="test.cobertura.output.format" value="html" />
- <property name="coveragereport.dir" value="${build.dir}/cobertura" />
- <!-- test patch properties -->
- <property name="scratch.dir" value="${user.home}/tmp"/>
- <property name="git.cmd" value="git"/>
- <property name="grep.cmd" value="grep"/>
- <property name="patch.cmd" value="patch"/>
- <property name="make.cmd" value="make"/>
- <property name="test_patch_sh" value="${server.test.resource.dir}/test-patch.sh"/>
- <property name="test_pullrequest_sh" value="${server.test.resource.dir}/test-github-pr.sh"/>
- <!-- jdiff.home property set -->
- <property name="jdiff.home" value="${ivy.jdiff.lib}"/>
- <property name="jdiff.build.dir" value="${build.docs}/jdiff"/>
- <property name="jdiff.xml.dir" value="${lib.dir}/jdiff"/>
- <property name="jdiff.stable" value="3.1.1"/>
- <property name="jdiff.stable.javadoc"
- value="http://hadoop.apache.org/zookeeper/docs/r${jdiff.stable}/api/"/>
- <!-- eclipse property set -->
- <property name="build.dir.eclipse" value=".eclipse"/>
- <property name="build.dir.eclipse-main-classes" value="${build.dir.eclipse}/classes-main"/>
- <property name="build.dir.eclipse-test-classes" value="${build.dir.eclipse}/classes-test"/>
- <!-- cppunit property set -->
- <property name="cppunit.lib" value="/usr/lib"/>
- <property name="cppunit.m4" value="/usr/share/aclocal"/>
- <!-- artifact publishing property set -->
- <property name="staging_repo_id" value="apache.staging.https"/>
- <property name="wagon-http.version" value="2.4"/>
- <property name="snapshots_repo_id" value="apache.snapshots.https"/>
- <property name="asfrepo" value="https://repository.apache.org"/>
- <property name="snapshots_repo_url"
- value="${asfrepo}/content/repositories/snapshots"/>
- <property name="staging_repo_url"
- value="${asfrepo}/service/local/staging/deploy/maven2"/>
- <property name="gpg-plugin"
- value="org.apache.maven.plugins:maven-gpg-plugin:1.4:sign-and-deploy-file"/>
- <property name="deploy-plugin"
- value="org.apache.maven.plugins:maven-deploy-plugin:2.8.1:deploy-file"/>
- <property name="main-jar" value="${dist.maven.dir}/${final.name}.jar"/>
- <property name="tests-jar" value="${dist.maven.dir}/${final.name}-tests.jar"/>
- <property name="sources-jar" value="${dist.maven.dir}/${final.name}-sources.jar"/>
- <property name="javadoc-jar" value="${dist.maven.dir}/${final.name}-javadoc.jar"/>
- <property name="hamcrest.version" value="1.3"/>
- <property name="jmh.version" value="1.19"/>
- <!-- ====================================================== -->
- <!-- 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>
- <path id="base.classpath">
- <pathelement location="${build.classes}"/>
- <!-- allow the user to override (e.g. if there are local versions) -->
- <fileset dir="${additional.lib.dir}">
- <include name="${additional.lib.dir.includes}" />
- <exclude name="${additional.lib.dir.excludes}" />
- </fileset>
- <fileset dir="${lib.dir}">
- <include name="${lib.dir.includes}" />
- <exclude name="${lib.dir.excludes}" />
- </fileset>
- <fileset dir="${ant.home}/lib">
- <include name="ant.jar" />
- </fileset>
- <fileset dir="${clover.home}/lib" erroronmissingdir="false">
- <include name="**/*.jar" if="run.clover" />
- </fileset>
- </path>
- <!-- the normal classpath -->
- <path id="java.classpath">
- <path refid="base.classpath"/>
- <fileset dir="${ivy.lib}">
- <include name="**/*.jar" />
- </fileset>
- </path>
- <path id="test.java.classpath">
- <pathelement location="${test.java.classes}" />
- <fileset dir="${ivy.test.lib}">
- <include name="**/*.jar" />
- </fileset>
- <path refid="base.classpath"/>
- </path>
- <!-- ====================================================== -->
- <!-- Generate and compile the Java files -->
- <!-- ====================================================== -->
- <target name="init">
- <mkdir dir="${build.classes}" />
- <mkdir dir="${ivy.lib}"/>
- <mkdir dir="${ivy.package.lib}"/>
- <mkdir dir="${ivy.test.lib}"/>
- <condition property="ivy.jar.exists">
- <available file="${lib.dir}/ivy-${ivy.version}.jar"/>
- </condition>
- <tstamp>
- <format property="build.time" pattern="MM/dd/yyyy HH:mm zz" timezone="GMT"/>
- <format property="year" pattern="yyyy" timezone="GMT"/>
- </tstamp>
- </target>
- <target name="generate_jute_parser" depends="init,ivy-retrieve,ivy-retrieve-javacc">
- <property name="jute_javacc.dir" value="${build.dir}/jute_compiler" />
- <property name="jute_javacc.packagedir" value="/org/apache/jute/compiler/generated" />
- <mkdir dir="${jute_javacc.dir}${jute_javacc.packagedir}"/>
- <!-- the javacc task expects a "javacc.jar" file... -->
- <ivy:artifactproperty name="[artifact].revision" value="[revision]" />
- <move file="${ivy.javacc.lib}/javacc-${javacc.revision}.jar" tofile="${ivy.javacc.lib}/javacc.jar" failonerror="false"/>
- <javacc
- target="${basedir}/zookeeper-jute/src/main/java${jute_javacc.packagedir}/rcc.jj"
- outputdirectory="${jute_javacc.dir}${jute_javacc.packagedir}/"
- javacchome="${ivy.javacc.lib}"
- />
- </target>
- <target name="jute" depends="generate_jute_parser">
- <javac srcdir="${jute_javacc.dir}" destdir="${build.classes}" includeantruntime="false"
- target="${javac.target}" source="${javac.source}"
- includes="org/apache/jute/**" debug="on" encoding="${build.encoding}" classpath="${ivy.lib}/audience-annotations-${audience-annotations.version}.jar">
- <src path="${basedir}/zookeeper-jute/src/main/java" />
- <src path="${jute_javacc.dir}" />
- </javac>
- </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="../../../src/main/resources/zookeeper.jute" />
- <classpath>
- <pathelement path="${build.classes}" />
- <pathelement path="${jute_javacc.dir}" />
- </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/src/main/resources/zookeeper.jute" />
- <classpath>
- <pathelement path="${build.classes}" />
- </classpath>
- </java>
- <touch file="${src_generated.dir}/.generated"/>
- </target>
- <target name="ver-gen" depends="init">
- <javac destdir="${build.classes}" includeantruntime="false"
- target="${javac.target}" source="${javac.source}"
- includes="org/apache/zookeeper/version/util/**" debug="on" encoding="${build.encoding}">
- <src path="${java.server.src.dir}" />
- </javac>
- </target>
- <target name="git-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 ${java.server.resources.dir}\lastRevision.bat" else="${java.server.resources.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,git-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}" />
- <arg value="${src_version_generated.dir}" />
- <classpath>
- <pathelement path="${build.classes}" />
- </classpath>
- </java>
- </target>
- <target name="build-generated" depends="compile_jute,version-info,process-template,ivy-retrieve" >
- <javac srcdir="${src_generated.dir}" destdir="${build.classes}" includeantruntime="false"
- target="${javac.target}" source="${javac.source}" debug="on" encoding="${build.encoding}" classpath="${ivy.lib}/audience-annotations-${audience-annotations.version}.jar" />
- </target>
- <target name="ivy-download" unless="ivy.jar.exists" depends="init">
- <delete dir="${lib.dir}"
- includes="ivy-*.jar" excludes="ivy-${ivy.version}.jar"/>
- <get src="${ivy.url}/${ivy.version}/ivy-${ivy.version}.jar"
- dest="${lib.dir}/ivy-${ivy.version}.jar" usetimestamp="true"/>
- </target>
- <target name="ivy-taskdef" unless="ivy.initialized">
- <taskdef resource="org/apache/ivy/ant/antlib.xml"
- uri="antlib:org.apache.ivy.ant" classpathref="java.classpath"/>
- <!-- ensure that ivy taskdef is only run once, otw ant will error -->
- <property name="ivy.initialized" value="true"/>
- </target>
- <target name="ivy-init" depends="ivy-download,ivy-taskdef">
- <ivy:settings id="${ant.project.name}" file="${ivysettings.xml}"/>
- </target>
- <target name="ivy-retrieve" depends="init,ivy-init">
- <ivy:retrieve settingsRef="${ant.project.name}" conf="default"
- pattern="${ivy.lib}/[artifact]-[revision].[ext]"/>
- </target>
- <target name="ivy-retrieve-test" depends="init,ivy-init">
- <ivy:retrieve settingsRef="${ant.project.name}" conf="test"
- pattern="${ivy.test.lib}/[artifact]-[revision].[ext]"/>
- </target>
- <target name="ivy-retrieve-package" depends="init,ivy-init">
- <ivy:retrieve settingsRef="${ant.project.name}" conf="package"
- pattern="${ivy.package.lib}/[artifact]-[revision].[ext]"/>
- </target>
- <target name="ivy-retrieve-jdiff" depends="init,ivy-init">
- <mkdir dir="${ivy.jdiff.lib}"/>
- <ivy:retrieve settingsRef="${ant.project.name}" conf="jdiff"
- pattern="${ivy.jdiff.lib}/[artifact]-[revision].[ext]"/>
- </target>
- <target name="ivy-retrieve-javacc" depends="init,ivy-init">
- <mkdir dir="${ivy.javacc.lib}"/>
- <ivy:retrieve settingsRef="${ant.project.name}" conf="javacc"
- pattern="${ivy.javacc.lib}/[artifact]-[revision].[ext]"/>
- </target>
- <target name="ivy-retrieve-releaseaudit" depends="init,ivy-init">
- <ivy:retrieve settingsRef="${ant.project.name}" conf="releaseaudit"
- pattern="${ivy.releaseaudit.lib}/[artifact]-[revision].[ext]"/>
- <ivy:cachepath pathid="releaseaudit-classpath" conf="releaseaudit"/>
- </target>
- <target name="ivy-retrieve-owasp" depends="init,ivy-init">
- <ivy:retrieve settingsRef="${ant.project.name}" conf="owasp"
- pattern="${ivy.owasp.lib}/[artifact]-[revision].[ext]"/>
- <ivy:cachepath pathid="owasp-classpath" conf="owasp"/>
- </target>
- <target name="ivy-retrieve-clover" if="run.clover" depends="init,ivy-init">
- <ivy:retrieve settingsRef="${ant.project.name}" conf="clover"
- pattern="${ivy.clover.lib}/[artifact]-[revision].[ext]"/>
- <ivy:cachepath pathid="clover-classpath" conf="clover"/>
- </target>
- <target name="dependency-report" depends="init,ivy-init">
- <ivy:resolve conf="*"/>
- <ivy:report conf="*" todir="${build.dir}/dependency-report"/>
- </target>
- <target name="process-template">
- <copy todir="${c.src.dir}" verbose="true" overwrite="true" failonerror="true">
- <fileset dir="${c.src.dir}">
- <include name="configure.ac.in"/>
- <include name="include/zookeeper_version.h.in"/>
- </fileset>
- <mapper>
- <globmapper from="*.in" to="*"/>
- </mapper>
- <filterchain>
- <striplinecomments>
- <comment value="!" />
- </striplinecomments>
- <expandproperties />
- </filterchain>
- </copy>
- </target>
- <target name="ivy-retrieve-mvn-ant-task" depends="init,ivy-init">
- <ivy:retrieve settingsRef="${ant.project.name}" conf="mvn-ant-task"
- pattern="${ivy.lib}/[artifact]-[revision].[ext]"/>
- <ivy:cachepath pathid="mvn-ant-task-classpath" conf="mvn-ant-task"/>
- </target>
- <target name="compile" depends="ivy-retrieve,clover,build-generated">
- <javac destdir="${build.classes}" includeantruntime="false"
- target="${javac.target}" source="${javac.source}" debug="on" encoding="${build.encoding}">
- <src path="${java.server.src.dir}"/>
- <src path="${jute.src.dir}"/>
- <src path="${src_version_generated.dir}"/>
- <classpath refid="java.classpath"/>
- <compilerarg value="-Xlint:all"/>
- <compilerarg value="-Xlint:-path"/>
- </javac>
- </target>
- <target name="compile-test" depends="ivy-retrieve-test,compile">
- <mkdir dir="${test.java.classes}"/>
- <javac destdir="${test.java.classes}" includeantruntime="false"
- target="${javac.target}" source="${javac.source}" debug="on" encoding="${build.encoding}">
- <src path="${java.server.test.dir}"/>
- <src path="${jute.test.src.dir}"/>
- <classpath refid="test.java.classpath"/>
- </javac>
- <javac srcdir="${systest.src.dir}" destdir="${test.java.classes}" includeantruntime="false"
- target="${javac.target}" source="${javac.source}" debug="on" encoding="${build.encoding}">
- <classpath refid="test.java.classpath"/>
- </javac>
- <javac srcdir="${bench.src.dir}" destdir="${test.java.classes}" includeantruntime="false"
- target="${javac.target}" source="${javac.source}" debug="on" encoding="${build.encoding}">
- <classpath refid="test.java.classpath"/>
- </javac>
- </target>
- <target name="compile-native" depends="compile_jute" description="Make C binding">
- <exec executable="autoreconf" dir="${c.src.dir}" searchpath="yes"
- failonerror="yes">
- <arg value="-if"/>
- <env key="ACLOCAL" value="aclocal -I ${cppunit.m4}"/>
- </exec>
- <mkdir dir="${build.dir}/c" />
- <condition property="enable.gcov.arg" value="--enable-gcov" else="">
- <equals arg1="${enable.gcov}" arg2="true"/>
- </condition>
- <exec executable="${c.src.dir}/configure" dir="${build.dir}/c"
- failonerror="yes">
- <env key="base_dir" value="${basedir}"/>
- <env key="CALLER" value="ANT"/>
- <arg value="--prefix=${build.dir}/c/build/${package.prefix}"/>
- <arg line="${enable.gcov.arg}"/>
- </exec>
- <property name="c.build" value="${build.dir}/c/build"/>
- <exec dir="${build.dir}/c" executable="make" failonerror="true">
- <arg value="install"/>
- <env key="LD_LIBRARY_PATH" value="${env.LD_LIBRARY_PATH};${c.build}"/>
- <env key="PATH" path="${env.PATH};${c.src.dir};"/>
- <env key="CALLER" value="ANT"/>
- <env key="base_dir" value="${basedir}"/>
- </exec>
- </target>
- <!-- ====================================================== -->
- <!-- Documentation -->
- <!-- ====================================================== -->
- <!-- Javadoc -->
- <target name="javadoc-dev" depends="jar"
- description="Generate javadoc for zookeeper developers">
- <mkdir dir="${build.javadoc.dev}"/>
- <javadoc
- overview="${java.server.resources.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.server.src.dir}">
- <include name="org/apache/**"/>
- <exclude name="org/apache/jute/**"/>
- </packageset>
- <packageset dir="${src_generated.dir}"/>
- <link href="${javadoc.link.java}"/>
- <classpath refid="java.classpath"/>
- </javadoc>
- </target>
- <target name="javadoc" depends="jar" description="Generate javadoc">
- <mkdir dir="${build.javadoc}"/>
- <javadoc
- overview="${java.server.resources.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"
- doclet="org.apache.yetus.audience.tools.IncludePublicAnnotationsStandardDoclet"
- docletpath="${ivy.lib}/audience-annotations-${audience-annotations.version}.jar"
- >
- <fileset dir="${java.server.src.dir}">
- <include name="org/apache/zookeeper/server/quorum/QuorumPeerMain.java"/>
- <include name="org/apache/zookeeper/server/ZooKeeperServerMain.java"/>
- <include name="org/apache/zookeeper/server/LogFormatter.java"/>
- <include name="org/apache/zookeeper/server/PurgeTxnLog.java"/>
- <include name="org/apache/zookeeper/server/SnapshotFormatter.java"/>
- </fileset>
- <packageset dir="${java.server.src.dir}">
- <include name="org/apache/**"/>
- <exclude name="org/apache/zookeeper/server/**"/>
- </packageset>
- <packageset dir="${jute.src.dir}">
- <include name="org/apache/**"/>
- </packageset>
- <packageset dir="${src_generated.dir}">
- <include name="org/apache/**"/>
- <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>
- <fileset dir="${basedir}">
- <include name="${jar.name}"/>
- </fileset>
- <path refid="java.classpath"/>
- </classpath>
- </javadoc>
- </target>
- <!-- ====================================================== -->
- <!-- Make zookeeper.jar -->
- <!-- ====================================================== -->
- <target name="jar" depends="compile">
- <java classname="org.apache.zookeeper.Version" fork="true"
- outputproperty="revision" errorproperty="revision.error" failonerror="true">
- <arg value="--revision" />
- <classpath>
- <pathelement path="${build.classes}" />
- <pathelement path="${clover.jar}" />
- </classpath>
- </java>
- <exec executable="hostname" outputproperty="host.name"/>
- <!-- Ensure that OSGi versions order properly whatever suffix is used by -->
- <!-- using DEV and REL at the start of the qualifier. DEV versions also -->
- <!-- use a timestamp to ensure later snapshots have higher versions -->
- <condition property="version-osgi"
- value="${version-base}.DEV-${DSTAMP}-${TSTAMP}-${version-suffix}"
- else="${version-base}.REL-${version-suffix}">
- <contains string="${version-suffix}" substring="SNAPSHOT" />
- </condition>
- <jar jarfile="${build.dir}/${final.name}.jar">
- <fileset file="LICENSE.txt" />
- <fileset dir="${build.classes}" excludes="**/.generated"/>
- <fileset dir="${java.server.src.dir}"/>
- <fileset dir="${jute.src.dir}"/>
- <fileset dir="${src_generated.dir}" excludes="**/.generated"/>
- <manifest>
- <attribute name="Main-Class" value="org.apache.zookeeper.server.quorum.QuorumPeerMain" />
- <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"/>
- <!-- The following are OSGi manifest headers -->
- <!-- currently hardcoded, when things get more complicated we could use BND
- http://www.aqute.biz/Code/Bnd to generate them -->
- <attribute name="Bundle-Vendor" value="The Apache Software Foundation"/>
- <attribute name="Bundle-Name" value="ZooKeeper Bundle"/>
- <attribute name="Bundle-SymbolicName" value="org.apache.hadoop.zookeeper"/>
- <attribute name="Bundle-ManifestVersion" value="2"/>
- <attribute name="Bundle-Version" value="${version-osgi}"/>
- <attribute name="Bundle-License" value="http://www.apache.org/licenses/LICENSE-2.0.txt"/>
- <attribute name="Bundle-DocURL" value="http://hadoop.apache.org/zookeeper"/>
- <attribute name="Import-Package" value='javax.management;resolution:=optional,javax.security.auth.callback,javax.security.auth.login,javax.security.sasl,org.slf4j;version="[1.6,2)",org.jboss.netty.buffer;resolution:=optional;version="[3.2,4)",org.jboss.netty.channel;resolution:=optional;version="[3.2,4)",org.jboss.netty.channel.group;resolution:=optional;version="[3.2,4)",org.jboss.netty.channel.socket.nio;resolution:=optional;version="[3.2,4)",org.osgi.framework;resolution:=optional;version="[1.5,2)",org.osgi.util.tracker;resolution:=optional;version="[1.4,2)",org.ietf.jgss'/>
- <attribute name="Export-Package" value='org.apache.zookeeper;version="${version-osgi}",org.apache.zookeeper.client;version="${version-osgi}",org.apache.zookeeper.data;version="${version-osgi}",org.apache.zookeeper.version;version="${version-osgi}",org.apache.zookeeper.server;version="${version-osgi}",org.apache.zookeeper.server.auth;version="${version-osgi}",org.apache.zookeeper.server.persistence;version="${version-osgi}",org.apache.zookeeper.server.quorum;version="${version-osgi}",org.apache.zookeeper.common;version="${version-osgi}"'/>
- </manifest>
- </jar>
- </target>
- <!-- ====================================================== -->
- <!-- Make zookeeper-bin.jar -->
- <!-- ====================================================== -->
- <target name="bin-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="${build.dir}/${final.name}-bin.jar">
- <fileset file="LICENSE.txt" />
- <fileset dir="${build.classes}" excludes="**/.generated"/>
- <manifest>
- <attribute name="Main-Class" value="org.apache.zookeeper.server.quorum.QuorumPeerMain" />
- <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"/>
- <!-- The following are OSGi manifest headers -->
- <!-- currently hardcoded, when things get more complicated we could use BND
- http://www.aqute.biz/Code/Bnd to generate them -->
- <attribute name="Bundle-Vendor" value="The Apache Software Foundation"/>
- <attribute name="Bundle-Name" value="ZooKeeper Bundle"/>
- <attribute name="Bundle-SymbolicName" value="org.apache.hadoop.zookeeper"/>
- <attribute name="Bundle-ManifestVersion" value="2"/>
- <attribute name="Bundle-Version" value="${version}"/>
- <attribute name="Bundle-License" value="http://www.apache.org/licenses/LICENSE-2.0.txt"/>
- <attribute name="Bundle-DocURL" value="http://hadoop.apache.org/zookeeper"/>
- <attribute name="Import-Package" value='javax.management;resolution:=optional,javax.security.auth.callback,javax.security.auth.login,javax.security.sasl,org.slf4j;version="[1.6,2)",org.jboss.netty.buffer;resolution:=optional;version="[3.2,4)",org.jboss.netty.channel;resolution:=optional;version="[3.2,4)",org.jboss.netty.channel.group;resolution:=optional;version="[3.2,4)",org.jboss.netty.channel.socket.nio;resolution:=optional;version="[3.2,4)",org.osgi.framework;resolution:=optional;version="[1.5,2)",org.osgi.util.tracker;resolution:=optional;version="[1.4,2)",org.ietf.jgss'/>
- <attribute name="Export-Package" value='org.apache.zookeeper;version="${version}",org.apache.zookeeper.client;version="${version}",org.apache.zookeeper.data;version="${version}",org.apache.zookeeper.version;version="${version}",org.apache.zookeeper.server;version="${version}",org.apache.zookeeper.server.auth;version="${version}",org.apache.zookeeper.server.persistence;version="${version}",org.apache.zookeeper.server.quorum;version="${version}",org.apache.zookeeper.common;version="${version}"'/>
- </manifest>
- </jar>
- </target>
- <!-- ====================================================== -->
- <!-- Make zookeeper-sources.jar -->
- <!-- ====================================================== -->
- <target name="src-jar" depends="build-generated">
- <jar jarfile="${build.dir}/${final.name}-sources.jar">
- <fileset file="LICENSE.txt" />
- <fileset dir="${java.server.src.dir}"/>
- <fileset dir="${jute.src.dir}"/>
- <fileset dir="${src_generated.dir}" excludes="**/.generated"/>
- <manifest>
- <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>
- <!-- ====================================================== -->
- <!-- Make zookeeper-javadoc.jar -->
- <!-- ====================================================== -->
- <target name="javadoc-jar" depends="javadoc">
- <jar jarfile="${build.dir}/${final.name}-javadoc.jar">
- <fileset file="LICENSE.txt" />
- <fileset dir="${build.javadoc}"/>
- <manifest>
- <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>
- <!-- ====================================================== -->
- <!-- Make zookeeper-test.jar -->
- <!-- ====================================================== -->
- <target name="test-jar" depends="compile-test">
- <jar jarfile="${build.dir}/${final.name}-test.jar">
- <fileset file="LICENSE.txt" />
- <fileset dir="${test.java.classes}"/>
- <manifest>
- <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>
- <!-- ================================================================== -->
- <!-- D I S T R I B U T I O N -->
- <!-- ================================================================== -->
- <!-- -->
- <!-- ================================================================== -->
- <target name="package"
- depends="jar,bin-jar,src-jar,javadoc-jar,test-jar,api-report,create-cppunit-configure,compile-test"
- description="Build distribution">
- <mkdir dir="${dist.dir}"/>
- <mkdir dir="${dist.dir}/lib"/>
- <mkdir dir="${dist.dir}/bin"/>
- <copy todir="${dist.dir}/lib" includeEmptyDirs="false">
- <fileset dir="${lib.dir}">
- <exclude name="**/ivy*.jar" />
- </fileset>
- <fileset dir="${ivy.lib}">
- <exclude name="**/jsr305*.jar" />
- <exclude name="**/spotbugs-annotations*.jar" />
- </fileset>
- </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}"/>
- <property name="package.share" value=""/>
- <fileset file="${contrib.dir}/build.xml"/>
- <fileset file="${recipes.dir}/build.xml"/>
- </subant>
- <copy todir="${dist.dir}">
- <fileset file="${build.dir}/${final.name}.jar"/>
- </copy>
- <checksum file="${dist.dir}/${final.name}.jar" algorithm="md5"/>
- <checksum file="${dist.dir}/${final.name}.jar" algorithm="sha1"/>
- <mkdir dir="${dist.maven.dir}"/>
- <copy file="${build.dir}/${final.name}-bin.jar"
- tofile="${dist.maven.dir}/${final.name}.jar"/>
- <copy todir="${dist.maven.dir}">
- <fileset file="${build.dir}/${final.name}-sources.jar"/>
- <fileset file="${build.dir}/${final.name}-javadoc.jar"/>
- </copy>
- <checksum file="${dist.maven.dir}/${final.name}.jar" algorithm="md5"/>
- <checksum file="${dist.maven.dir}/${final.name}.jar" algorithm="sha1"/>
- <checksum file="${dist.maven.dir}/${final.name}-sources.jar" algorithm="md5"/>
- <checksum file="${dist.maven.dir}/${final.name}-sources.jar" algorithm="sha1"/>
- <checksum file="${dist.maven.dir}/${final.name}-javadoc.jar" algorithm="md5"/>
- <checksum file="${dist.maven.dir}/${final.name}-javadoc.jar" algorithm="sha1"/>
- <ivy:makepom settingsRef="${ant.project.name}" ivyfile="${basedir}/ivy.xml"
- pomfile="${dist.maven.dir}/${final.name}.pom"
- templatefile="${java.server.resources.dir}/pom.template" conf="default,test" >
- <mapping conf="default" scope="compile"/>
- <mapping conf="test" scope="test"/>
- </ivy:makepom>
- <checksum file="${dist.maven.dir}/${final.name}.pom" algorithm="md5"/>
- <checksum file="${dist.maven.dir}/${final.name}.pom" algorithm="sha1"/>
- <copy file="${build.dir}/${final.name}-test.jar"
- tofile="${dist.maven.dir}/${final.name}-tests.jar"/>
- <checksum file="${dist.maven.dir}/${final.name}-tests.jar" algorithm="sha1"/>
- <checksum file="${dist.maven.dir}/${final.name}-tests.jar" algorithm="md5"/>
- <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}/zookeeper-docs">
- <fileset dir="zookeeper-docs/src/main/resources/markdown/" includes="**">
- <exclude name="html/**" />
- </fileset>
- <fileset dir="${build.docs}"/>
- </copy>
- <copy todir="${dist.dir}">
- <fileset file="CHANGES.txt"/>
- <fileset file="README.md"/>
- <fileset file="README_packaging.md"/>
- <fileset file="build.xml"/>
- <fileset file="ivy.xml"/>
- <fileset file="ivysettings.xml"/>
- <fileset file="${java.server.resources.dir}/NOTICE.txt"/>
- <fileset file="${java.server.resources.dir}/LICENSE.txt"/>
- <fileset file="pom.xml"/>
- </copy>
- <copy todir="${dist.dir}" includeEmptyDirs="true">
- <fileset dir="${basedir}" excludes="**/*.template **/docs/build/**/* **/ivy*.jar">
- <include name="zookeeper-assembly/**"/>
- <include name="zookeeper-recipes/**"/>
- <include name="zookeeper-docs/**"/>
- <include name="zookeeper-contrib/**"/>
- <include name="zookeeper-client/**"/>
- <include name="zookeeper-jute/**"/>
- <include name="zookeeper-server/**"/>
- <include name="zookeeper-it/**"/>
- </fileset>
- </copy>
- <copy todir="${dist.dir}/zookeeper-server/src/main/resources">
- <fileset file="${java.server.resources.dir}/pom.template"/>
- </copy>
- <chmod perm="ugo+x" type="file" parallel="false">
- <fileset dir="${dist.dir}/bin"/>
- <fileset dir="${dist.dir}/zookeeper-contrib/">
- <include name="*/bin/*" />
- </fileset>
- </chmod>
- </target>
- <target name="bin-package"
- depends="jar,bin-jar,src-jar,javadoc-jar,test-jar,api-report,create-cppunit-configure,compile-test"
- description="Build binary distribution">
- <delete dir="${dist.dir}"/>
- <mkdir dir="${dist.dir}"/>
- <mkdir dir="${dist.dir}/lib"/>
- <mkdir dir="${dist.dir}/libexec"/>
- <mkdir dir="${dist.dir}/share/zookeeper/contrib"/>
- <mkdir dir="${dist.dir}/share/zookeeper/recipes"/>
- <mkdir dir="${dist.dir}/bin"/>
- <mkdir dir="${dist.dir}/share/zookeeper/templates/conf"/>
- <mkdir dir="${dist.dir}/sbin"/>
- <copy todir="${dist.dir}/share/zookeeper" includeEmptyDirs="false">
- <fileset dir="${lib.dir}">
- <exclude name="**/ivy*.jar" />
- </fileset>
- <fileset dir="${ivy.lib}"/>
- </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}"/>
- <property name="package.share" value="/share/zookeeper"/>
- <fileset file="${contrib.dir}/build.xml"/>
- <fileset file="${recipes.dir}/build.xml"/>
- </subant>
- <copy todir="${dist.dir}/share/zookeeper">
- <fileset file="${build.dir}/${final.name}.jar"/>
- </copy>
- <checksum file="${dist.dir}/share/zookeeper/${final.name}.jar" algorithm="md5"/>
- <checksum file="${dist.dir}/share/zookeeper/${final.name}.jar" algorithm="sha1"/>
- <mkdir dir="${dist.maven.dir}"/>
- <copy file="${build.dir}/${final.name}-bin.jar"
- tofile="${dist.maven.dir}/${final.name}.jar"/>
- <copy todir="${dist.maven.dir}">
- <fileset file="${build.dir}/${final.name}-sources.jar"/>
- <fileset file="${build.dir}/${final.name}-javadoc.jar"/>
- </copy>
- <checksum file="${dist.maven.dir}/${final.name}.jar" algorithm="md5"/>
- <checksum file="${dist.maven.dir}/${final.name}.jar" algorithm="sha1"/>
- <checksum file="${dist.maven.dir}/${final.name}-sources.jar" algorithm="md5"/>
- <checksum file="${dist.maven.dir}/${final.name}-sources.jar" algorithm="sha1"/>
- <checksum file="${dist.maven.dir}/${final.name}-javadoc.jar" algorithm="md5"/>
- <checksum file="${dist.maven.dir}/${final.name}-javadoc.jar" algorithm="sha1"/>
- <ivy:makepom settingsRef="${ant.project.name}" ivyfile="${basedir}/ivy.xml"
- pomfile="${dist.maven.dir}/${name}.pom"
- templatefile="${java.server.resources.dir}/pom.template">
- <mapping conf="default" scope="compile"/>
- <mapping conf="test" scope="test"/>
- </ivy:makepom>
- <checksum file="${dist.maven.dir}/${name}.pom" algorithm="md5"/>
- <checksum file="${dist.maven.dir}/${name}.pom" algorithm="sha1"/>
- <copy file="${build.dir}/${final.name}-test.jar"
- tofile="${dist.maven.dir}/${final.name}-tests.jar"/>
- <checksum file="${dist.maven.dir}/${final.name}-tests.jar" algorithm="sha1"/>
- <checksum file="${dist.maven.dir}/${final.name}-tests.jar" algorithm="md5"/>
- <copy todir="${dist.dir}/bin">
- <fileset dir="bin" includes="zkCli*"/>
- </copy>
- <copy todir="${dist.dir}/libexec">
- <fileset dir="bin" includes="zkEnv*"/>
- </copy>
- <copy todir="${dist.dir}/sbin">
- <fileset dir="bin" includes="zkServer*"/>
- </copy>
- <copy todir="${dist.dir}/conf">
- <fileset dir="${conf.dir}" excludes="**/*.template"/>
- </copy>
- <copy todir="${dist.dir}/docs">
- <fileset dir="zookeeper-docs/src/main/resources/markdown/" includes="**">
- <exclude name="html/**" />
- </fileset>
- <fileset dir="${build.docs}" />
- </copy>
- <copy todir="${dist.dir}">
- <fileset file="CHANGES.txt"/>
- <fileset file="README.md"/>
- <fileset file="README_packaging.md"/>
- <fileset file="build.xml"/>
- <fileset file="ivy.xml"/>
- <fileset file="ivysettings.xml"/>
- <fileset file="${java.server.resources.dir}/NOTICE.txt"/>
- <fileset file="${java.server.resources.dir}/LICENSE.txt"/>
- </copy>
- <copy todir="${dist.dir}" includeEmptyDirs="true">
- <fileset dir="${basedir}" excludes="**/*.template **/docs/build/**/* **/ivy*.jar">
- <include name="zookeeper-assembly/**"/>
- <include name="zookeeper-recipes/**"/>
- <include name="zookeeper-docs/**"/>
- <include name="zookeeper-contrib/**"/>
- <include name="zookeeper-client/**"/>
- <include name="zookeeper-jute/**"/>
- <include name="zookeeper-server/**"/>
- <include name="zookeeper-it/**"/>
- </fileset>
- </copy>
- <copy todir="${dist.dir}/zookeeper-server/src/main/resources">
- <fileset file="${java.server.resources.dir}/pom.template"/>
- </copy>
- <chmod perm="ugo+x" type="file" parallel="false">
- <fileset dir="${dist.dir}/bin"/>
- <fileset dir="${dist.dir}/sbin"/>
- <fileset dir="${dist.dir}/zookeeper-contrib/">
- <include name="**/*.sh" />
- <include name="**/*.py" />
- </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>
- <!-- it's unfortunate that the binaries have to be duplicated
- however that's the only way ant currently supports afaik -->
- <tarfileset dir="${build.dir}" mode="664">
- <exclude name="${final.name}/bin/*" />
- <exclude name="${final.name}/zookeeper-contrib/*/bin/*" />
- <exclude name="${final.name}/**/compile" />
- <exclude name="${final.name}/**/config.guess" />
- <exclude name="${final.name}/**/config.sub" />
- <exclude name="${final.name}/**/configure" />
- <exclude name="${final.name}/**/depcomp" />
- <exclude name="${final.name}/**/install-sh" />
- <exclude name="${final.name}/**/ltmain.sh" />
- <exclude name="${final.name}/**/missing" />
- <exclude name="${final.name}/**/*.sh" />
- <include name="${final.name}/**" />
- </tarfileset>
- <tarfileset dir="${build.dir}" mode="755">
- <!-- be sure to add to exclude list above if you add here -->
- <include name="${final.name}/bin/*" />
- <include name="${final.name}/zookeeper-contrib/*/bin/*" />
- <!-- autotools related commands -->
- <include name="${final.name}/**/compile" />
- <include name="${final.name}/**/config.guess" />
- <include name="${final.name}/**/config.sub" />
- <include name="${final.name}/**/configure" />
- <include name="${final.name}/**/depcomp" />
- <include name="${final.name}/**/install-sh" />
- <include name="${final.name}/**/ltmain.sh" />
- <include name="${final.name}/**/missing" />
- <!-- any shell scripts -->
- <include name="${final.name}/**/*.sh" />
- </tarfileset>
- </param.listofitems>
- </macro_tar>
- </target>
- <target name="binary" depends="bin-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}/zookeeper-client/zookeeper-client-c/**" />
- <exclude name="${final.name}/zookeeper-client/zookeeper-client-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>
- <target name="package-native" depends="compile-native, bin-package" description="Make C binding tarball">
- <!-- For Unix platforms only, use OS native tar to preserve symlinks -->
- <exec executable="tar" dir="${build.dir}/c/build">
- <arg value="cfzv" />
- <arg value="${build.dir}/${final.name}-lib.tar.gz" />
- <arg value="." />
- </exec>
- <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"/>
- <fileset file="${recipes.dir}/build.xml"/>
- </subant>
- </target>
- <!-- ====================================================== -->
- <!-- mvn-deploy. Publishing jars to nexus -->
- <!-- ====================================================== -->
- <macrodef name="deploy" description="macro definition for publishing artifacts to nexus snapshots">
- <attribute name="jars" default="${tests-jar},${sources-jar},${javadoc-jar}"/>
- <attribute name="maven-jar" default="${main-jar}"/>
- <attribute name="repo-url" default="${snapshots_repo_url}"/>
- <attribute name="repo-id" default="${snapshots_repo_id}"/>
- <attribute name="profile" default="-P!gpg"/>
- <attribute name="plugin" default="${deploy-plugin}"/>
- <attribute name="attachas" default="tests,sources,javadoc"/>
- <sequential>
- <artifact:mvn>
- <arg value="@{plugin}"/>
- <arg value="-Durl=@{repo-url}"/>
- <arg value="-DrepositoryId=@{repo-id}"/>
- <arg value="-Dfiles=@{jars}"/>
- <arg value="-Dfile=@{maven-jar}"/>
- <arg value="-Dpackaging=jar"/>
- <arg value="-DpomFile=${dist.maven.dir}/${name}.pom"/>
- <arg value="-Dclassifiers=@{attachas}"/>
- <arg value="-Dtype=jar"/>
- <arg value="-Dtypes=jar,jar,jar"/>
- <arg value="@{profile}"/>
- </artifact:mvn>
- </sequential>
- </macrodef>
- <target name="mvn-deploy" depends="mvn-taskdef, bin-package, simpledeploy, signanddeploy"
- description="To deploy jar's to a maven repository"/>
- <target name="signanddeploy" if="staging">
- <deploy repo-url="${staging_repo_url}" repo-id="${staging_repo_id}" plugin="${gpg-plugin}" profile="-Pgpg"/>
- </target>
- <target name="simpledeploy" unless="staging">
- <deploy plugin="${deploy-plugin}"/>
- </target>
- <!-- ====================================================== -->
- <!-- mvn-install. Installing the jar and pom file to .m2 -->
- <!-- ====================================================== -->
- <target name="mvn-taskdef" depends="ivy-retrieve-mvn-ant-task">
- <typedef resource="org/apache/maven/artifact/ant/antlib.xml"
- uri="antlib:org.apache.maven.artifact.ant" classpathref="mvn-ant-task-classpath"/>
- </target>
- <target name="mvn-install" depends="bin-package, mvn-taskdef">
- <echo message="${dist.maven.dir}/${final.name}.pom" />
- <echo message="${dist.maven.dir}/${final.name}.jar" />
- <echo message="${dist.maven.dir}/${final.name}-sources.jar" />
- <echo message="${dist.maven.dir}/${final.name}-javadoc.jar" />
- <echo message="${dist.maven.dir}/${final.name}-tests.jar" />
- <artifact:pom id="zookeeper-pom" file="${dist.maven.dir}/${name}.pom"/>
- <echo>The version is ${zookeeper-pom.version}</echo>
- <echo message="${dist.maven.dir}/${final.name}.jar" />
- <artifact:install file="${dist.maven.dir}/${final.name}.jar">
- <pom refid="zookeeper-pom" />
- <attach file="${dist.maven.dir}/${final.name}.jar" type="jar"/>
- <attach file="${dist.maven.dir}/${final.name}-sources.jar" type="jar" classifier="sources"/>
- <attach file="${dist.maven.dir}/${final.name}-javadoc.jar" type="jar" classifier="javadoc"/>
- <attach file="${dist.maven.dir}/${final.name}-tests.jar" type="jar" classifier="tests"/>
- </artifact:install>
- </target>
- <!-- ====================================================== -->
- <!-- Clean. Delete the build files, and their directories -->
- <!-- ====================================================== -->
- <target name="clean" depends="clean-contrib,clean-recipes"
- 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="${lib.dir}/Null.java"/>
- <delete file="${lib.dir}/rats.jar" />
- <delete file="${jdiff.xml.dir}/${name}_${version}.xml"/>
- <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>
- <target name="clean-recipes">
- <subant target="clean">
- <fileset file="${recipes.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.invalid.dir}" />
- <delete dir="${test.data.buffersize.dir}" />
- <delete dir="${test.data.kerberos.dir}" />
- <delete dir="${test.data.ssl.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.invalid.dir}" />
- <copy todir="${test.data.invalid.dir}">
- <fileset dir="${server.test.resource.dir}/data/invalidsnap"/>
- </copy>
- <mkdir dir="${test.data.buffersize.dir}" />
- <copy todir="${test.data.buffersize.dir}">
- <fileset dir="${server.test.resource.dir}/data/buffersize"/>
- </copy>
- <mkdir dir="${test.data.ssl.dir}" />
- <copy todir="${test.data.ssl.dir}">
- <fileset dir="${server.test.resource.dir}/data/ssl"/>
- </copy>
- <mkdir dir="${test.data.kerberos.dir}" />
- <copy todir="${test.data.kerberos.dir}">
- <fileset dir="${server.test.resource.dir}/data/kerberos"/>
- </copy>
- </target>
- <target name="junit-init" depends="test-category">
- <condition property="quicktest">
- <and>
- <equals arg1="${test.quick}" arg2="yes"/>
- <not>
- <isset property="testcase"/>
- </not>
- </and>
- </condition>
- <condition property="fulltest">
- <and>
- <equals arg1="${test.quick}" arg2="no"/>
- <not>
- <isset property="testcase"/>
- </not>
- </and>
- </condition>
- <condition property="ant.supports.concurrent.junit.processes">
- <antversion atleast="1.9.4" />
- </condition>
- <property name="build.test.dir" value="${test.tmp.dir}" />
- <property name="test.data.dir" value="${test.data.dir}" />
- <property name="log4j.configuration"
- value="file:${basedir}/conf/log4j.properties" />
- <!-- superDigest is used by the tests/main code. If this is not set
- as part of starting the jvm there is no guarantee that the static
- initializers in the java code will see this (esp when running
- with junit fork mode set to "once")-->
- <property name="zookeeper.DigestAuthenticationProvider.superDigest"
- value="super:D/InIHSb7yEEbrWz8b9l71RjZJU=" />
- <propertyset id="junit.sys.properties">
- <propertyref name="build.test.dir" />
- <propertyref name="test.data.dir" />
- <propertyref name="log4j.configuration" />
- <propertyref name="zookeeper.DigestAuthenticationProvider.superDigest" />
- <propertyref name="test.method" />
- </propertyset>
- <path id="junit.classpath">
- <path refid="test.java.classpath" />
- <pathelement path="${test.java.classes}" />
- </path>
- <fileset id="quicktest.files" dir="${java.server.test.dir}">
- <include name="**/*${test.category}Test.java" />
- <exclude name="**/*HammerTest.java" />
- </fileset>
- <fileset id="jutetest.files" dir="${jute.test.src.dir}">
- <include name="**/*${test.category}Test.java" />
- </fileset>
- <fileset id="fulltest.files" dir="${java.server.test.dir}">
- <include name="**/*${test.category}Test.java" />
- </fileset>
- <fileset id="testcase.files" dir="${java.server.test.dir}">
- <include name="**/${testcase}.java" />
- </fileset>
- </target>
- <target name="junit.run" depends="junit-init,junit.run-single,junit.run-concurrent" />
- <target name="junit.run-concurrent" if="ant.supports.concurrent.junit.processes">
- <echo>Running ${test.junit.threads} concurrent JUnit processes.</echo>
- <junit showoutput="${test.output}"
- printsummary="${test.junit.printsummary}"
- haltonfailure="${test.junit.haltonfailure}"
- fork="yes"
- forkmode="${test.junit.fork.mode}"
- threads="${test.junit.threads}"
- maxmemory="${test.junit.maxmem}"
- dir="${test.java.build.dir}" timeout="${test.timeout}"
- errorProperty="tests.failed" failureProperty="tests.failed">
- <syspropertyset refid="junit.sys.properties" />
- <sysproperty key="test.junit.threads" value="${test.junit.threads}" />
- <classpath refid="junit.classpath" />
- <formatter type="${test.junit.output.format}" />
- <batchtest todir="${test.log.dir}" if="quicktest">
- <fileset refid="quicktest.files" />
- <fileset refid="jutetest.files" />
- </batchtest>
- <batchtest todir="${test.log.dir}" if="fulltest">
- <fileset refid="fulltest.files" />
- <fileset refid="jutetest.files" />
- </batchtest>
- <batchtest todir="${test.log.dir}" if="testcase">
- <fileset refid="testcase.files" />
- </batchtest>
- </junit>
- <antcall target="fail.build.on.test.failure"/>
- </target>
- <target name="fail.build.on.test.failure" if="${test.junit.failbuild.ontestfailure}" >
- <fail if="tests.failed">Tests failed!</fail>
- </target>
- <target name="junit.run-single" unless="ant.supports.concurrent.junit.processes">
- <echo>Running single JUnit process. Upgrade to Ant 1.9.4 or later to run multiple JUnit processes.</echo>
- <junit showoutput="${test.output}"
- printsummary="${test.junit.printsummary}"
- haltonfailure="${test.junit.haltonfailure}"
- fork="yes"
- forkmode="${test.junit.fork.mode}"
- maxmemory="${test.junit.maxmem}"
- dir="${test.java.build.dir}" timeout="${test.timeout}"
- errorProperty="tests.failed" failureProperty="tests.failed">
- <syspropertyset refid="junit.sys.properties" />
- <classpath refid="junit.classpath" />
- <formatter type="${test.junit.output.format}" />
- <batchtest todir="${test.log.dir}" if="quicktest">
- <fileset refid="quicktest.files" />
- <fileset refid="jutetest.files" />
- </batchtest>
- <batchtest todir="${test.log.dir}" if="fulltest">
- <fileset refid="fulltest.files" />
- <fileset refid="jutetest.files" />
- </batchtest>
- <batchtest todir="${test.log.dir}" if="testcase">
- <fileset refid="testcase.files" />
- </batchtest>
- </junit>
- <antcall target="fail.build.on.test.failure"/>
- </target>
- <target name="check-cppunit-configure" depends="init" >
- <condition property="need.cppunit.configure">
- <not> <available file="${c.src.dir}/configure"/> </not>
- </condition>
- </target>
- <target name="verify-cppunit-makefile-gcov">
- <fileset id="fileset.makefile.gcov.enabled" dir="${test.cppunit.dir}" erroronmissingdir="false">
- <include name="Makefile"/>
- <containsregexp expression="^[^#]+-ftest-coverage.*$"/>
- </fileset>
- <condition property="makefile.gcov.enabled">
- <resourcecount when="greater" count="0" refid="fileset.makefile.gcov.enabled"/>
- </condition>
- <echo message="makefile.gcov.enabled = ${makefile.gcov.enabled}"/>
- <condition property="delete.cppunit.makefile">
- <and>
- <isset property="makefile.gcov.enabled"/>
- <not><equals arg1="${enable.gcov}" arg2="true"/></not>
- </and>
- </condition>
- <echo message="delete.cppunit.makefile = ${delete.cppunit.makefile}"/>
- </target>
- <target name="delete-cppunit-makefile" if="delete.cppunit.makefile">
- <delete file="${test.cppunit.dir}/Makefile"/>
- </target>
- <target name="check-cppunit-makefile" depends="init,verify-cppunit-makefile-gcov,delete-cppunit-makefile" >
- <condition property="need.cppunit.makefile">
- <not> <available file="${test.cppunit.dir}/Makefile"/> </not>
- </condition>
- </target>
- <!--
- 1. If we have a Makefile it will handle up-to-date check and also
- regenerate the configure script if missing. (done)
- 2. If we don't have a Makefile use the configure script to
- regenerate it. (done)
- 3. If we don't have a Makefile nor a configure script then it's
- last resort and run autoreconf, then configure (done)
- -->
- <target name="create-cppunit-configure" depends="check-cppunit-configure"
- if="need.cppunit.configure">
- <exec executable="autoreconf" dir="${c.src.dir}" searchpath="yes"
- failonerror="yes">
- <arg value="-if"/>
- <env key="ACLOCAL" value="aclocal -I ${cppunit.m4}"/>
- </exec>
- </target>
- <target name="create-cppunit-makefile" depends="check-cppunit-makefile"
- if="need.cppunit.makefile">
- <antcall target="create-cppunit-configure">
- <param name="cppunit" value="true"/>
- </antcall>
- <mkdir dir="${test.cppunit.dir}"/>
- <condition property="enable.gcov.arg" value="--enable-gcov" else="">
- <equals arg1="${enable.gcov}" arg2="true"/>
- </condition>
- <exec executable="${c.src.dir}/configure" dir="${test.cppunit.dir}"
- failonerror="yes">
- <env key="base_dir" value="${basedir}"/>
- <env key="CALLER" value="ANT"/>
- <arg value="--prefix=${test.cppunit.dir}"/>
- <arg line="${enable.gcov.arg}"/>
- </exec>
- </target>
- <target name="call-test-cppunit" description="to execute cppunit tests">
- <antcall target="create-cppunit-makefile"/>
- <antcall target="test-cppunit">
- <param name="cppunit" value="true"/>
- </antcall>
- </target>
- <target name="test-cppunit"
- depends="compile_jute, jar, create-cppunit-makefile"
- if="cppunit"
- description="to run cppunit test cases">
- <exec dir="${test.cppunit.dir}" executable="make" failonerror="true">
- <env key="LD_LIBRARY_PATH" value="${env.LD_LIBRARY_PATH};${cppunit.lib}"/>
- <env key="PATH" path="${env.PATH};${c.src.dir};"/>
- <env key="CALLER" value="ANT"/>
- <env key="CLOVER_HOME" value="${clover.home}"/>
- <env key="base_dir" value="${basedir}"/>
- <arg line="clean check"/>
- </exec>
- </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" description="to run core and contrib tests">
- <antcall target="test-core"/>
- <antcall target="test-contrib"/>
- </target>
- <target name="test-contrib" description="to run contrib tests">
- <!-- yet to implement -->
- </target>
- <target name="test-core-java" depends="test-init, test-category, junit.run"/>
- <target name="test-core-cppunit" depends="test-init, test-category, call-test-cppunit"/>
- <target name="test-core" depends="test-core-java, test-core-cppunit"/>
- <!-- ====================================================== -->
- <!-- Run optional third-party tool targets -->
- <!-- ====================================================== -->
- <!-- Clover code coverage -->
- <target name="test-coverage-clover-java"
- description="Runs Java tests with Clover and generates coverage report in HTML and XML.">
- <antcall target="test-core-java">
- <param name="run.clover" value="true"/>
- </antcall>
- <antcall target="clover-report"/>
- </target>
- <target name="clover" if="run.clover" depends="ivy-retrieve-clover,clover.check,clover.setup"
- description="Used in compile target to add source code instrumentation for Clover and sets up the Clover database."/>
- <target name="clover.check">
- <available property="clover.present"
- classname="com.atlassian.clover.CloverInstr"
- classpath="${clover.home}/lib/clover-${clover.version}.jar"/>
- <fail if="run.clover" unless="clover.present">
- Clover not found.
- Please make sure clover-${clover.version}.jar is in ${clover.home}/lib, or made available
- to Ant using other mechanisms like -lib or CLASSPATH.
- </fail>
- </target>
- <target name="clover.setup" if="run.clover">
- <taskdef resource="cloverlib.xml" classpath="${clover.jar}"/>
- <mkdir dir="${clover.db.dir}"/>
- <clover-setup initString="${clover.db}">
- <fileset dir="${java.server.src.dir}"
- includes="org/apache/zookeeper/**/*"
- excludes="org/apache/zookeeper/version/**/*">
- </fileset>
- <testsources dir="${java.server.test.dir}">
- <testclass package="org.apache.zookeeper.*" name=".*Test">
- <testmethod annotation="Test"/>
- </testclass>
- </testsources>
- </clover-setup>
- </target>
- <target name="clover-report" depends="ivy-retrieve-clover"
- description="Generates coverage report in HTML and XML. Run the tests first with 'ant -Drun.clover=true test-core-java' to generate coverage data.">
- <taskdef resource="cloverlib.xml" classpath="${clover.jar}"/>
- <mkdir dir="${clover.report.dir}"/>
- <clover-report initString="${clover.db}">
- <current outfile="${clover.report.dir}" title="${final.name}">
- <format type="html"/>
- </current>
- </clover-report>
- <clover-report initString="${clover.db}">
- <current outfile="${clover.report.dir}/clover.xml" title="${final.name}">
- <format type="xml"/>
- </current>
- </clover-report>
- </target>
- <target name="c_coverage_report" description="Runs coverage report for ZK C client code.">
- <!-- delete configure and make files so that they get regenerated with coverage enabled -->
- <delete file="${c.src.dir}/configure"/>
- <delete file="${test.cppunit.dir}/Makefile"/>
- <subant target="test-core-cppunit" failonerror="false">
- <property name="enable.gcov" value="true"/>
- <fileset dir="." file="build.xml"/>
- </subant>
- <mkdir dir="${build.dir}/c_coverage" />
- <copy todir="${build.dir}/c" verbose="true" overwrite="true" failonerror="true">
- <fileset dir="${build.dir}/test/test-cppunit/.libs">
- <include name="*.gcno"/>
- <include name="*.gcda"/>
- </fileset>
- </copy>
- <exec dir="${build.dir}/c" executable="lcov">
- <arg line="-t testname -o ZK_C_client.info -c -d ."/>
- </exec>
- <exec dir="${build.dir}/c_coverage" executable="genhtml">
- <arg line="-o report ${build.dir}/c/ZK_C_client.info"/>
- </exec>
- </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.java.build.dir}/findbugs" />
- <property name="findbugs.exclude.file" value="${server.test.resource.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>
- <fileset dir="${ivy.lib}">
- <include name="**/*.jar" />
- </fileset>
- </auxClasspath>
- <sourcePath path="${java.server.src.dir}" />
- <class location="${build.dir}/${final.name}.jar" />
- </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>
- <fileset dir="${ivy.lib}">
- <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>
- <fileset dir="${ivy.lib}">
- <include name="**/*.jar" />
- </fileset>
- </classpath>
- <classpath>
- <pathelement path="${test.java.classes}" />
- </classpath>
- <classpath refid="test.java.classpath"/>
- <classpath>
- <pathelement path="${build.classes}" />
- </classpath>
- <formatter type="${test.junit.output.format}" />
- <batchtest todir="${test.log.dir}" unless="testcase">
- <fileset dir="${java.server.test.dir}"
- includes="**/*Test.java"/>
- </batchtest>
- <batchtest todir="${test.log.dir}" if="testcase">
- <fileset dir="${java.server.test.dir}" includes="**/${testcase}.java"/>
- </batchtest>
- </junit>
- <antcall target="fail.build.on.test.failure"/>
- </target>
- <target name="cobertura-report" depends="cobertura-test">
- <cobertura-report format="${test.cobertura.output.format}"
- destdir="${coveragereport.dir}" >
- <fileset dir="${java.server.src.dir}">
- <include name="**/*.java" />
- </fileset>
- <fileset dir="${src_generated.dir}">
- <include name="**/*.java" />
- </fileset>
- </cobertura-report>
- </target>
- <target name="checkstyle" depends="ivy-retrieve-test" description="Run Checkstyle coding standard checks">
- <taskdef resource="com/puppycrawl/tools/checkstyle/ant/checkstyle-ant-task.properties" uri="antlib:com.puppycrawl.tools.checkstyle.ant">
- <classpath>
- <fileset dir="${ivy.test.lib}" includes="*.jar" />
- </classpath>
- </taskdef>
- <mkdir dir="${test.java.build.dir}"/>
- <cs:checkstyle config="${server.test.resource.dir}/checkstyle.xml" failOnViolation="false">
- <fileset dir="${basedir}/zookeeper-server" includes="**/*.java" excludes="**/generated/**"/>
- <formatter type="xml" toFile="${test.java.build.dir}/checkstyle-errors.xml"/>
- </cs:checkstyle>
- <xslt style="${server.test.resource.dir}/checkstyle-noframes-sorted.xsl" in="${test.java.build.dir}/checkstyle-errors.xml"
- out="${test.java.build.dir}/checkstyle-errors.html"/>
- </target>
- <!-- ================================================================== -->
- <!-- Perform audit activities for the release -->
- <!-- ================================================================== -->
- <target name="rats-taskdef" depends="ivy-retrieve-releaseaudit">
- <typedef format="xml" resource="org/apache/rat/anttasks/antlib.xml" uri="antlib:org.apache.rat.anttasks"
- classpathref="releaseaudit-classpath"/>
- </target>
- <target name="owasp-taskdef" depends="ivy-retrieve-owasp">
- <typedef format="properties" resource="dependency-check-taskdefs.properties" uri="antlib:org.owasp.dependencycheck.anttasks" classpathref="owasp-classpath"/>
- </target>
- <target name="owasp" depends="owasp-taskdef,ivy-retrieve" description="OWASP dependency check">
- <property name="owasp.out.dir" value="${test.java.build.dir}/owasp" />
- <owasp:dependency-check-update xmlns:owasp="antlib:org.owasp.dependencycheck.anttasks" />
- <owasp:dependency-check xmlns:owasp="antlib:org.owasp.dependencycheck.anttasks"
- projectname="ZooKeeper"
- reportoutputdirectory="${owasp.out.dir}"
- reportformat="ALL"
- failBuildOnCVSS="0">
- <suppressionfile path="${basedir}/owaspSuppressions.xml" />
- <fileset dir="${ivy.lib}">
- <include name="**/*.jar"/>
- </fileset>
- <fileset dir="${lib.dir}">
- <include name="**/*.jar"/>
- </fileset>
- </owasp:dependency-check>
- </target>
- <target name="releaseaudit" depends="package,rats-taskdef" description="Release Audit activities">
- <rat:report xmlns:rat="antlib:org.apache.rat.anttasks">
- <fileset dir="${dist.dir}">
- <exclude name="**/*.cer"/>
- <exclude name="**/*.m4"/>
- <exclude name="**/*.md5"/>
- <exclude name="**/*.pom"/>
- <exclude name="**/*.sha1"/>
- <exclude name="**/.gitignore"/>
- <exclude name="**/Makefile**"/>
- <exclude name="**/winconfig.h"/>
- <exclude name="**/configure**"/>
- <exclude name="**/*Doxyfile"/>
- <exclude name="**/*.am"/>
- <exclude name="**/compile"/>
- <exclude name="**/depcomp"/>
- <exclude name="**/install-sh"/>
- <exclude name="**/log4j.properties"/>
- <exclude name="**/ltmain.sh"/>
- <exclude name="**/missing"/>
- <exclude name="**/wrappers*.opt"/>
- <exclude name="CHANGES.txt"/>
- <exclude name="**/README.md"/>
- <exclude name="README_packaging.md"/>
- <exclude name="**/TODO"/>
- <exclude name="**/VERSION"/>
- <exclude name="**/ChangeLog"/>
- <exclude name="**/Changes"/>
- <exclude name="**/zookeeper-contrib/zookeeper-contrib-zkperl/MANIFEST"/>
- <exclude name="**/conf/*"/>
- <exclude name="**/zookeeper-docs/"/>
- <exclude name="**/lib/jdiff/"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-ZooInspector/src/main/java/com/nitido/utils/toaster/Toaster.java"/>
- <exclude name="zookeeper-client/zookeeper-client-c/*.la"/>
- <exclude name="zookeeper-client/zookeeper-client-c/*.lo"/>
- <exclude name="zookeeper-client/zookeeper-client-c/.libs/"/>
- <exclude name="zookeeper-client/zookeeper-client-c/autom4te.cache/**"/>
- <exclude name="zookeeper-client/zookeeper-client-c/config**"/>
- <exclude name="zookeeper-client/zookeeper-client-c/include/winstdint.h"/>
- <exclude name="zookeeper-client/zookeeper-client-c/src/hashtable/"/>
- <exclude name="zookeeper-client/zookeeper-client-c/test-driver"/>
- <exclude name="zookeeper-client/zookeeper-client-c/tests/quorum.cfg"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/main/resources/webapp/org/apache/zookeeper/graph/resources/date.format.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/main/resources/webapp/org/apache/zookeeper/graph/resources/g.bar.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/main/resources/webapp/org/apache/zookeeper/graph/resources/g.dot.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/main/resources/webapp/org/apache/zookeeper/graph/resources/g.line.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/main/resources/webapp/org/apache/zookeeper/graph/resources/g.pie.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/main/resources/webapp/org/apache/zookeeper/graph/resources/g.raphael.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/main/resources/webapp/org/apache/zookeeper/graph/resources/raphael.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/main/resources/webapp/org/apache/zookeeper/graph/resources/yui-min.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/resources/webapp/org/apache/zookeeper/graph/resources/date.format.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/resources/webapp/org/apache/zookeeper/graph/resources/g.bar.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/resources/webapp/org/apache/zookeeper/graph/resources/g.dot.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/resources/webapp/org/apache/zookeeper/graph/resources/g.line.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/resources/webapp/org/apache/zookeeper/graph/resources/g.pie.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/resources/webapp/org/apache/zookeeper/graph/resources/g.raphael.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/resources/webapp/org/apache/zookeeper/graph/resources/raphael.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-loggraph/src/resources/webapp/org/apache/zookeeper/graph/resources/yui-min.js"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-monitoring/JMX-RESOURCES"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-zooinspector/src/main/java/com/nitido/utils/toaster/Toaster.java"/>
- <exclude name="zookeeper-contrib/zookeeper-contrib-fatjar/src/main/resources/mainClasses"/>
- <exclude name="zookeeper-jute/target/main/java/.generated/"/>
- <exclude name="zookeeper-server/src/test/resources/checkstyle*.xml"/>
- <exclude name="zookeeper-server/src/test/resources/checkstyle*.xsl"/>
- <exclude name="zookeeper-server/src/test/resources/findbugs*.xml"/>
- <exclude name="**/*.vcproj"/>
- <exclude name="**/*.vcxproj*"/>
- <exclude name="**/*.sln"/>
- </fileset>
- </rat:report>
- </target>
- <target name="findbugs.check" depends="check-for-findbugs" unless="findbugs.present">
- <fail message="'findbugs.home' is not defined. Please pass -Dfindbugs.home=<base of Findbugs installation>
- to Ant on the command-line." />
- </target>
- <target name="patch.check" unless="patch.file">
- <fail message="'patch.file' is not defined. Please pass -Dpatch.file=<location of patch file>
- to Ant on the command-line." />
- </target>
- <target name="test-patch" depends="patch.check,findbugs.check">
- <exec executable="bash" failonerror="true">
- <arg value="${test_patch_sh}"/>
- <arg value="DEVELOPER"/>
- <arg value="${patch.file}"/>
- <arg value="${scratch.dir}"/>
- <arg value="${git.cmd}"/>
- <arg value="${grep.cmd}"/>
- <arg value="${patch.cmd}"/>
- <arg value="${findbugs.home}"/>
- <arg value="${basedir}"/>
- <arg value="${java5.home}"/>
- </exec>
- </target>
- <target name="hudson-test-patch" depends="findbugs.check">
- <exec executable="bash" failonerror="true">
- <arg value="${test_patch_sh}"/>
- <arg value="HUDSON"/>
- <arg value="${scratch.dir}"/>
- <arg value="${ps.cmd}"/>
- <arg value="${wget.cmd}"/>
- <arg value="${jiracli.cmd}"/>
- <arg value="${git.cmd}"/>
- <arg value="${grep.cmd}"/>
- <arg value="${patch.cmd}"/>
- <arg value="${findbugs.home}"/>
- <arg value="${basedir}"/>
- <arg value="${jira.passwd}"/>
- <arg value="${java5.home}"/>
- <arg value="${curl.cmd}"/>
- <arg value="${defect}"/>
- </exec>
- </target>
- <target name="qa-test-pullrequest" depends="findbugs.check">
- <exec executable="bash" failonerror="true">
- <arg value="${test_pullrequest_sh}"/>
- <arg value="QABUILD"/>
- <arg value="${scratch.dir}"/>
- <arg value="${ps.cmd}"/>
- <arg value="${wget.cmd}"/>
- <arg value="${jiracli.cmd}"/>
- <arg value="${git.cmd}"/>
- <arg value="${grep.cmd}"/>
- <arg value="${patch.cmd}"/>
- <arg value="${findbugs.home}"/>
- <arg value="${basedir}"/>
- <arg value="${jira.passwd}"/>
- <arg value="${java5.home}"/>
- <arg value="${curl.cmd}"/>
- </exec>
- </target>
- <!-- this target runs the hudson trunk build -->
- <target name="hudson-test-trunk" depends="tar,findbugs"/>
- <target name="api-xml" depends="ivy-retrieve-jdiff, javadoc, write-null">
- <javadoc>
- <doclet name="jdiff.JDiff"
- path="${ivy.jdiff.lib}/jdiff-1.0.9.jar:${ivy.jdiff.lib}/xerces-1.4.4.jar">
- <param name="-apidir" value="${jdiff.xml.dir}"/>
- <param name="-apiname" value="${name} ${version}"/>
- </doclet>
- <packageset dir="${java.server.src.dir}">
- <include name="org/apache/zookeeper"/>
- <exclude name="org/apache/jute"/>
- </packageset>
- <classpath>
- <pathelement location="${build.classes}"/>
- <fileset dir="${lib.dir}">
- <include name="**/*.jar" />
- <exclude name="**/excluded/" />
- </fileset>
- <fileset dir="${ivy.lib}">
- <include name="**/*.jar" />
- </fileset>
- </classpath>
- </javadoc>
- </target>
- <target name="write-null">
- <exec executable="touch">
- <arg value="${jdiff.home}/Null.java"/>
- </exec>
- </target>
- <target name="api-report" depends="api-xml">
- <mkdir dir="${jdiff.build.dir}"/>
- <javadoc destdir="${jdiff.build.dir}"
- excludepackagenames="org.apache.jute"
- sourceFiles="${jdiff.home}/Null.java">
- <fileset dir="${java.server.src.dir}"/>
- <doclet name="jdiff.JDiff"
- path="${ivy.jdiff.lib}/jdiff-1.0.9.jar:${ivy.jdiff.lib}/xerces-1.4.4.jar">
- <param name="-oldapi" value="${name} ${jdiff.stable}"/>
- <param name="-newapi" value="${name} ${version}"/>
- <param name="-oldapidir" value="${jdiff.xml.dir}"/>
- <param name="-newapidir" value="${jdiff.xml.dir}"/>
- <param name="-javadocold" value="${jdiff.stable.javadoc}"/>
- <param name="-javadocnew" value="../../api/"/>
- <param name="-stats"/>
- </doclet>
- <classpath>
- <pathelement location="${build.classes}"/>
- <fileset dir="${lib.dir}">
- <include name="**/*.jar" />
- <exclude name="**/excluded/" />
- </fileset>
- <fileset dir="${ivy.lib}">
- <include name="**/*.jar" />
- </fileset>
- </classpath>
- </javadoc>
- </target>
- <condition property="ant-eclipse.jar.exists">
- <available file="${lib.dir}/ant-eclipse-1.0-jvm1.2.jar"/>
- </condition>
- <target name="ant-eclipse-download" unless="ant-eclipse.jar.exists">
- <get src="https://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2"
- dest="${java.server.resources.dir}/ant-eclipse-1.0.bin.tar.bz2" usetimestamp="false" />
- <bunzip2 src="${java.server.resources.dir}/ant-eclipse-1.0.bin.tar.bz2"/>
- <untar src="${java.server.resources.dir}/ant-eclipse-1.0.bin.tar"
- dest="${java.server.resources.dir}">
- <patternset>
- <include name="lib/ant-eclipse-1.0-jvm1.2.jar"/>
- </patternset>
- </untar>
- <delete file="${java.server.resources.dir}/ant-eclipse-1.0.bin.tar" />
- <delete file="${java.server.resources.dir}/ant-eclipse-1.0.bin.tar.bz2" />
- </target>
- <target name="eclipse"
- depends="ant-eclipse-download,init,ivy-retrieve,build-generated,ivy-retrieve-test"
- description="Create eclipse project files">
- <ivy:resolve useOrigin="true" conf="test"/>
- <ivy:cachepath pathid="default.path.id" conf="default" />
- <ivy:cachepath pathid="junit.path.id" conf="test" />
- <taskdef name="eclipse"
- classname="prantl.ant.eclipse.EclipseTask"
- classpathref="java.classpath" />
- <eclipse updatealways="true">
- <settings>
- <jdtcore compilercompliance="6.0" />
- <resources encoding="UTF-8" />
- </settings>
- <project name="${ant.project.name}" />
- <classpath>
- <source path="${java.server.src.dir}"
- output="${build.dir.eclipse-main-classes}" />
- <source path="${jute.src.dir}"
- output="${build.dir.eclipse-main-classes}" />
- <source path="${src_generated.dir}"
- output="${build.dir.eclipse-main-classes}" />
- <source path="${java.server.test.dir}"
- output="${build.dir.eclipse-test-classes}" />
- <source path="${systest.src.dir}"
- output="${build.dir.eclipse-test-classes}" />
- <source path="${bench.src.dir}"
- output="${build.dir.eclipse-test-classes}" />
- <output path="${build.dir.eclipse-main-classes}" />
- <library pathref="default.path.id" exported="true" />
- <library pathref="junit.path.id" exported="false" />
- </classpath>
- </eclipse>
- </target>
- <target name="clean-eclipse" description="Clean eclipse files">
- <delete file=".classpath" />
- <delete file=".eclipse" />
- <delete file=".project" />
- <delete dir=".settings" />
- <delete dir="${build.dir.eclipse}" />
- </target>
- </project>
|