234 lines
9.3 KiB
XML
234 lines
9.3 KiB
XML
<?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>
|