123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- <?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.
- -->
- <!-- Imported by contrib/*/build.xml files to share generic targets. -->
- <project name="zookeeperbuildcontrib" xmlns:ivy="antlib:org.apache.ivy.ant">
- <property name="name" value="${ant.project.name}"/>
- <property name="version" value="dev"/>
- <property name="root" value="${basedir}"/>
- <property name="zk.root" location="${root}/../../"/>
- <property name="src.dir" location="${root}/src/main/java"/>
- <property name="src.test" location="${root}/src/test"/>
- <property name="lib.dir" location="${zk.root}/zookeeper-server/src/main/resources/lib"/>
- <property name="build.dir" location="${zk.root}/zookeeper-contrib/zookeeper-contrib-${name}/target"/>
- <property name="build.classes" location="${build.dir}/classes"/>
- <property name="build.test" location="${build.dir}/test"/>
- <property name="javac.deprecation" value="on"/>
- <property name="javac.debug" value="on"/>
- <property name="build.encoding" value="utf8"/>
- <property name="ivy.version" value="2.4.0"/>
- <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.test.lib" value="${build.test}/lib"/>
- <property name="ivysettings.xml" value="${zk.root}/zookeeper-contrib/ivysettings.xml"/>
- <!-- to be overridden by sub-projects -->
- <target name="check-contrib"/>
- <target name="init-contrib"/>
- <property name="lib.jars.includes" value="lib/*.jar" />
- <property name="lib.jars.excludes" value="" />
- <!-- 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="${zk.root}/bin" />
- <property name="additional.lib.dir.includes" value="**/*.jar" />
- <property name="additional.lib.dir.excludes" value="**/*.jar" />
- <fileset id="lib.jars" dir="${root}">
- <include name="${lib.jars.includes}" />
- <exclude name="${lib.jars.excludes}" />
- </fileset>
- <path id="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 refid="lib.jars"/>
- <pathelement location="${zk.root}/build/classes"/>
- <fileset dir="${ivy.lib}">
- <include name="**/*.jar" />
- </fileset>
- <fileset dir="${ivy.test.lib}">
- <include name="**/*.jar" />
- </fileset>
- <fileset dir="${zk.root}/zookeeper-server/src/main/resources/lib">
- <include name="**/*.jar" />
- </fileset>
- <fileset dir="${ant.home}/lib">
- <include name="ant.jar" />
- </fileset>
- </path>
- <!-- ====================================================== -->
- <!-- Stuff needed by all targets -->
- <!-- ====================================================== -->
- <target name="init" depends="check-contrib" unless="skip.contrib">
- <echo message="contrib: ${name}"/>
- <mkdir dir="${build.dir}"/>
- <mkdir dir="${build.classes}"/>
- <mkdir dir="${build.test}"/>
- <mkdir dir="${ivy.lib}"/>
- <mkdir dir="${ivy.test.lib}"/>
- <condition property="ivy.jar.exists">
- <available file="${lib.dir}/ivy-${ivy.version}.jar"/>
- </condition>
- <antcall target="init-contrib"/>
- </target>
- <!-- ====================================================== -->
- <!-- Compile a contrib's files -->
- <!-- ====================================================== -->
- <target name="compile" depends="init"
- unless="skip.contrib">
- <echo message="contrib: ${name}"/>
- <javac
- encoding="${build.encoding}"
- srcdir="${src.dir}"
- includes="**/*.java"
- destdir="${build.classes}"
- debug="${javac.debug}"
- deprecation="${javac.deprecation}">
- <classpath refid="classpath"/>
- </javac>
- </target>
- <!-- ====================================================== -->
- <!-- Make a contrib's jar -->
- <!-- ====================================================== -->
- <target name="jar" depends="compile" unless="skip.contrib">
- <echo message="contrib: ${name}"/>
- <jar
- jarfile="${build.dir}/zookeeper-${version}-${name}.jar"
- basedir="${build.classes}"
- />
- </target>
- <!-- ====================================================== -->
- <!-- Package a contrib's files -->
- <!-- ====================================================== -->
- <target name="package" depends="jar" unless="skip.contrib">
- <echo message="contrib: ${name}"/>
- <mkdir dir="${dist.dir}${package.share}/zookeeper-contrib/zookeeper-contrib-${name}"/>
- <copy todir="${dist.dir}${package.share}/zookeeper-contrib/zookeeper-contrib-${name}" includeEmptyDirs="false"
- flatten="true">
- <fileset dir="${build.dir}">
- <include name="zookeeper-${version}-${name}.jar" />
- </fileset>
- </copy>
- </target>
- <!-- ====================================================== -->
- <!-- Package a contrib's files -->
- <!-- ====================================================== -->
- <target name="package-native" depends="jar" unless="skip.contrib">
- <echo message="contrib: ${name}"/>
- </target>
- <!-- ================================================================== -->
- <!-- Clean. Delete the build files, and their directories -->
- <!-- ================================================================== -->
- <target name="clean">
- <echo message="contrib: ${name}"/>
- <delete dir="${build.dir}"/>
- </target>
- <!-- ================================================================== -->
- <!-- Utility features -->
- <!-- ================================================================== -->
- <target name="checkMainIsAvailable">
- <available classname="org.apache.zookeeper.ZooKeeperMain"
- property="mainIsCompiled">
- <!-- we can't use id=classpath, because available fails if fileset directory
- doesn't exist -->
- <classpath>
- <pathelement location="${zk.root}/zookeeper-server/target/classes"/>
- </classpath>
- </available>
- </target>
- <target name="checkMainCompiled" unless="mainIsCompiled" depends="checkMainIsAvailable">
- <fail message="ZooKeeper main must first be compiled (toplevel build.xml)"/>
- </target>
- <target name="checkMainTestIsAvailable">
- <available file="${zk.root}/zookeeper-server/target/test-classes/org/apache/zookeeper/test/ClientBase.class"
- property="mainTestIsCompiled">
- </available>
- </target>
- <target name="checkMainTestCompiled" unless="mainTestIsCompiled" depends="checkMainTestIsAvailable">
- <fail message="ZooKeeper test must first be compiled (toplevel build.xml) using 'ant compile-test'"/>
- </target>
- <!-- ====================================================== -->
- <!-- Ivy -->
- <!-- ====================================================== -->
- <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-init" depends="ivy-download" unless="ivy.initialized">
- <taskdef resource="org/apache/ivy/ant/antlib.xml"
- uri="antlib:org.apache.ivy.ant" classpathref="classpath"/>
- <!-- ensure that ivy taskdef is only run once, otw ant will error -->
- <property name="ivy.initialized" value="true"/>
- <ivy:settings id="${ant.project.name}" file="${ivysettings.xml}"/>
- </target>
- <target name="ivy-retrieve" depends="init,ivy-init">
- <ivy:retrieve settingsRef="${ant.project.name}" type="jar" conf="default"
- pattern="${ivy.lib}/[artifact]-[revision].[ext]"/>
- <ivy:retrieve settingsRef="${ant.project.name}" type="bundle" conf="default"
- pattern="${ivy.lib}/[artifact]-[revision].[ext]"/>
- </target>
- <target name="ivy-retrieve-test" depends="init,ivy-init">
- <ivy:retrieve settingsRef="${ant.project.name}" type="jar" conf="test"
- pattern="${ivy.test.lib}/[artifact]-[revision].[ext]"/>
- </target>
- </project>
|