123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312 |
- <?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="hadoopbuildcontrib" xmlns:ivy="antlib:org.apache.ivy.ant">
- <property name="name" value="${ant.project.name}"/>
- <property name="root" value="${basedir}"/>
- <property name="hadoop.root" location="${root}/../../../"/>
- <!-- Load all the default properties, and any the user wants -->
- <!-- to contribute (without having to type -D or edit this file -->
- <property file="${user.home}/${name}.build.properties" />
- <property file="${root}/build.properties" />
- <property file="${hadoop.root}/build.properties" />
- <property name="src.dir" location="${root}/src/java"/>
- <property name="src.test" location="${root}/src/test"/>
- <property name="src.examples" location="${root}/src/examples"/>
- <available file="${src.examples}" type="dir" property="examples.available"/>
- <available file="${src.test}" type="dir" property="test.available"/>
- <property name="conf.dir" location="${hadoop.root}/conf"/>
- <property name="test.junit.output.format" value="plain"/>
- <property name="test.output" value="no"/>
- <property name="test.timeout" value="900000"/>
- <property name="build.dir" location="${hadoop.root}/build/contrib/${name}"/>
- <property name="build.webapps.root.dir" value="${hadoop.root}/build/web"/>
- <property name="build.webapps" value="${build.webapps.root.dir}/webapps"/>
- <property name="build.classes" location="${build.dir}/classes"/>
- <!-- NB: sun.arch.data.model is not supported on all platforms -->
- <property name="build.platform"
- value="${os.name}-${os.arch}-${sun.arch.data.model}"/>
- <property name="build.c++.libhdfs" value="${build.dir}/../../c++/${build.platform}/lib"/>
- <property name="build.test" location="${build.dir}/test"/>
- <property name="build.examples" location="${build.dir}/examples"/>
- <property name="hadoop.log.dir" location="${build.dir}/test/logs"/>
- <!-- all jars together -->
- <property name="javac.deprecation" value="off"/>
- <property name="javac.debug" value="on"/>
- <property name="build.ivy.lib.dir" value="${hadoop.root}/build/ivy/lib"/>
- <property name="javadoc.link"
- value="http://java.sun.com/j2se/1.4/docs/api/"/>
- <property name="build.encoding" value="ISO-8859-1"/>
- <fileset id="lib.jars" dir="${root}" includes="lib/*.jar"/>
- <!-- IVY properties set here -->
- <property name="ivy.dir" location="ivy" />
- <property name="ivysettings.xml" location="${hadoop.root}/ivy/ivysettings.xml"/>
- <loadproperties srcfile="${ivy.dir}/libraries.properties"/>
- <loadproperties srcfile="ivy/libraries.properties"/>
- <property name="ivy.jar" location="${hadoop.root}/ivy/ivy-${ivy.version}.jar"/>
- <property name="ivy_repo_url"
- value="http://repo2.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar" />
- <property name="build.dir" location="build" />
- <property name="build.ivy.dir" location="${build.dir}/ivy" />
- <property name="build.ivy.lib.dir" location="${build.ivy.dir}/lib" />
- <property name="build.ivy.report.dir" location="${build.ivy.dir}/report" />
- <property name="common.ivy.lib.dir" location="${build.ivy.lib.dir}/${ant.project.name}/common"/>
- <!--this is the naming policy for artifacts we want pulled down-->
- <property name="ivy.artifact.retrieve.pattern"
- value="${ant.project.name}/[conf]/[artifact]-[revision](-[classifier]).[ext]"/>
- <!-- the normal classpath -->
- <path id="contrib-classpath">
- <pathelement location="${build.classes}"/>
- <fileset refid="lib.jars"/>
- <pathelement location="${hadoop.root}/build/classes"/>
- <fileset dir="${hadoop.root}/lib">
- <include name="**/*.jar" />
- </fileset>
- <path refid="${ant.project.name}.common-classpath"/>
- <pathelement path="${clover.jar}"/>
- </path>
- <!-- the unit test classpath -->
- <path id="test.classpath">
- <pathelement location="${build.test}"/>
- <pathelement location="${build.webapps.root.dir}"/>
- <pathelement location="${hadoop.root}/build/test/core/classes"/>
- <pathelement location="${hadoop.root}/build/test/hdfs/classes"/>
- <pathelement location="${hadoop.root}/build/test/mapred/classes"/>
- <pathelement location="${hadoop.root}/src/contrib/test"/>
- <pathelement location="${conf.dir}"/>
- <pathelement location="${hadoop.root}/build"/>
- <pathelement location="${build.examples}"/>
- <path refid="contrib-classpath"/>
- </path>
- <!-- to be overridden by sub-projects -->
- <target name="check-contrib"/>
- <target name="init-contrib"/>
- <!-- ====================================================== -->
- <!-- 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="${build.examples}"/>
- <mkdir dir="${hadoop.log.dir}"/>
- <antcall target="init-contrib"/>
- </target>
- <!-- ====================================================== -->
- <!-- Compile a Hadoop contrib's files -->
- <!-- ====================================================== -->
- <target name="compile" depends="init, ivy-retrieve-common" 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="contrib-classpath"/>
- </javac>
- </target>
- <!-- ======================================================= -->
- <!-- Compile a Hadoop contrib's example files (if available) -->
- <!-- ======================================================= -->
- <target name="compile-examples" depends="compile" if="examples.available">
- <echo message="contrib: ${name}"/>
- <javac
- encoding="${build.encoding}"
- srcdir="${src.examples}"
- includes="**/*.java"
- destdir="${build.examples}"
- debug="${javac.debug}">
- <classpath refid="contrib-classpath"/>
- </javac>
- </target>
- <!-- ================================================================== -->
- <!-- Compile test code -->
- <!-- ================================================================== -->
- <target name="compile-test" depends="compile-examples" if="test.available">
- <echo message="contrib: ${name}"/>
- <javac
- encoding="${build.encoding}"
- srcdir="${src.test}"
- includes="**/*.java"
- destdir="${build.test}"
- debug="${javac.debug}">
- <classpath refid="test.classpath"/>
- </javac>
- </target>
-
- <!-- ====================================================== -->
- <!-- Make a Hadoop contrib's jar -->
- <!-- ====================================================== -->
- <target name="jar" depends="compile" unless="skip.contrib">
- <echo message="contrib: ${name}"/>
- <jar
- jarfile="${build.dir}/hadoop-${version}-${name}.jar"
- basedir="${build.classes}"
- />
- </target>
-
- <!-- ====================================================== -->
- <!-- Make a Hadoop contrib's examples jar -->
- <!-- ====================================================== -->
- <target name="jar-examples" depends="compile-examples"
- if="examples.available" unless="skip.contrib">
- <echo message="contrib: ${name}"/>
- <jar jarfile="${build.dir}/hadoop-${version}-${name}-examples.jar">
- <fileset dir="${build.classes}">
- </fileset>
- <fileset dir="${build.examples}">
- </fileset>
- </jar>
- </target>
-
- <!-- ====================================================== -->
- <!-- Package a Hadoop contrib -->
- <!-- ====================================================== -->
- <target name="package" depends="jar, jar-examples" unless="skip.contrib">
- <mkdir dir="${dist.dir}/contrib/${name}"/>
- <copy todir="${dist.dir}/contrib/${name}" includeEmptyDirs="false" flatten="true">
- <fileset dir="${build.dir}">
- <include name="hadoop-${version}-${name}.jar" />
- </fileset>
- </copy>
- </target>
-
- <!-- ================================================================== -->
- <!-- Run unit tests -->
- <!-- ================================================================== -->
- <target name="test" depends="compile-test, compile" if="test.available">
- <echo message="contrib: ${name}"/>
- <delete dir="${hadoop.log.dir}"/>
- <mkdir dir="${hadoop.log.dir}"/>
- <junit
- printsummary="yes" showoutput="${test.output}"
- haltonfailure="no" fork="yes" maxmemory="256m"
- errorProperty="tests.failed" failureProperty="tests.failed"
- timeout="${test.timeout}">
-
- <sysproperty key="test.build.data" value="${build.test}/data"/>
- <sysproperty key="build.test" value="${build.test}"/>
- <sysproperty key="contrib.name" value="${name}"/>
-
- <!-- requires fork=yes for:
- relative File paths to use the specified user.dir
- classpath to use build/contrib/*.jar
- -->
- <sysproperty key="java.net.preferIPv4Stack" value="true"/>
- <sysproperty key="user.dir" value="${build.test}/data"/>
-
- <sysproperty key="fs.default.name" value="${fs.default.name}"/>
- <sysproperty key="hadoop.test.localoutputfile" value="${hadoop.test.localoutputfile}"/>
- <sysproperty key="hadoop.log.dir" value="${hadoop.log.dir}"/>
- <sysproperty key="taskcontroller-path" value="${taskcontroller-path}"/>
- <sysproperty key="taskcontroller-user" value="${taskcontroller-user}"/>
- <classpath refid="test.classpath"/>
- <formatter type="${test.junit.output.format}" />
- <batchtest todir="${build.test}" unless="testcase">
- <fileset dir="${src.test}"
- includes="**/Test*.java" excludes="**/${test.exclude}.java" />
- </batchtest>
- <batchtest todir="${build.test}" if="testcase">
- <fileset dir="${src.test}" includes="**/${testcase}.java"/>
- </batchtest>
- </junit>
- <fail if="tests.failed">Tests failed!</fail>
- </target>
- <!-- ================================================================== -->
- <!-- Clean. Delete the build files, and their directories -->
- <!-- ================================================================== -->
- <target name="clean">
- <echo message="contrib: ${name}"/>
- <delete dir="${build.dir}"/>
- </target>
- <target name="ivy-probe-antlib" >
- <condition property="ivy.found">
- <typefound uri="antlib:org.apache.ivy.ant" name="cleancache"/>
- </condition>
- </target>
- <target name="ivy-download" description="To download ivy " unless="offline">
- <get src="${ivy_repo_url}" dest="${ivy.jar}" usetimestamp="true"/>
- </target>
- <target name="ivy-init-antlib" depends="ivy-download,ivy-probe-antlib" unless="ivy.found">
- <typedef uri="antlib:org.apache.ivy.ant" onerror="fail"
- loaderRef="ivyLoader">
- <classpath>
- <pathelement location="${ivy.jar}"/>
- </classpath>
- </typedef>
- <fail >
- <condition >
- <not>
- <typefound uri="antlib:org.apache.ivy.ant" name="cleancache"/>
- </not>
- </condition>
- You need Apache Ivy 2.0 or later from http://ant.apache.org/
- It could not be loaded from ${ivy_repo_url}
- </fail>
- </target>
- <target name="ivy-init" depends="ivy-init-antlib">
- <ivy:configure settingsid="${ant.project.name}.ivy.settings" file="${ivysettings.xml}"/>
- </target>
- <target name="ivy-resolve-common" depends="ivy-init">
- <ivy:resolve settingsRef="${ant.project.name}.ivy.settings" conf="common" />
- </target>
- <target name="ivy-retrieve-common" depends="ivy-resolve-common"
- description="Retrieve Ivy-managed artifacts for the compile/test configurations">
- <ivy:retrieve settingsRef="${ant.project.name}.ivy.settings"
- pattern="${build.ivy.lib.dir}/${ivy.artifact.retrieve.pattern}" sync="true" />
- <ivy:cachepath pathid="${ant.project.name}.common-classpath" conf="common" />
- </target>
- </project>
|