blob: cdcc1f7d509c4e8505da26ebc3688d3fa1eb9155 [file] [log] [blame]
<?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="chukwa-xtrace" default="main" xmlns:ivy="antlib:org.apache.ivy.ant">
<property name="name" value="chukwa-xtrace" />
<import file="../build-contrib.xml" optional="true" />
<available file="../build-contrib.xml" property="present" />
<property name="src.dir" value="${basedir}/src" />
<property name="build.dir" value="${basedir}/build" />
<property name="build.classes" value="${build.dir}/classes/" />
<property name="conf.dir" value="${basedir}/conf" />
<property name="docs.src" value="${basedir}/src/docs" />
<property name="docs.dir" value="${basedir}/docs" />
<property name="changes.src" value="${docs.src}/changes" />
<property name="tools.dir" value="${basedir}/tools" />
<property name="opt.dir" value="${basedir}/opt" />
<property name="javac.debug" value="on" />
<property name="javac.version" value="1.6" />
<property name="test.src.dir" value="${basedir}/test/src/java/" />
<property name="test.lib.dir" value="${basedir}/src/test/lib" />
<property name="test.build.dir" value="${build.dir}/test" />
<property name="test.generated.dir" value="${test.build.dir}/src" />
<property name="test.build.data" value="${test.build.dir}/data" />
<property name="test.cache.data" value="${test.build.dir}/cache" />
<property name="test.debug.data" value="${test.build.dir}/debug" />
<property name="test.log.dir" value="${test.build.dir}/logs" />
<property name="test.build.classes" value="${test.build.dir}/classes/" />
<property name="test.build.testjar" value="${test.build.dir}/testjar" />
<property name="test.build.javadoc" value="${test.build.dir}/docs/api" />
<property name="test.build.javadoc.dev" value="${test.build.dir}/docs/dev-api" />
<property name="test.include" value="Test*" />
<property name="test.classpath.id" value="test.classpath" />
<property name="test.output" value="no" />
<property name="test.timeout" value="900000" />
<property name="test.junit.output.format" value="plain" />
<property name="test.junit.fork.mode" value="perTest" />
<property name="test.junit.printsummary" value="yes" />
<property name="test.junit.haltonfailure" value="yes" />
<property name="test.junit.maxmemory" value="256m" />
<property name="javadoc.link.java" value="http://java.sun.com/javase/6/docs/api/" />
<property name="javadoc.packages" value="org.apache.hadoop.*" />
<property name="javadoc.maxmemory" value="512m" />
<target name="ivy-init-properties-local" description="to initiate ivy properties">
<property name="ivy.dir" location="ivy" />
<property name="ivysettings.xml" location="${ivy.dir}/ivysettings.xml" />
<loadproperties srcfile="${ivy.dir}/libraries.properties" />
<loadproperties srcfile="${ivy.dir}/libraries.properties" />
<property name="ivy.jar" location="${ivy.dir}/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" />
<property name="rat.reporting.classname" value="rat.Report" />
<property name="jdiff.build.dir" value="${build.docs}/jdiff" />
<property name="jdiff.xml.dir" value="${build.ivy.lib.dir}/${name}/jdiff" />
<property name="jdiff.stable" value="0.1.2" />
<property name="jdiff.stable.javadoc" value="http://hadoop.apache.org/core/docs/r${jdiff.stable}/api/" />
<!--this is the naming policy for artifacts we want pulled down-->
<property name="ivy.artifact.retrieve.pattern" value="${ant.project.name}/[conf]/[artifact]-[revision].[ext]" />
<property name="jdiff.home" value="${build.ivy.lib.dir}/${ant.project.name}/jdiff" />
<property name="jdiff.jar" value="${jdiff.home}/jdiff-${jdiff.version}.jar" />
<property name="xerces.jar" value="${jdiff.home}/xerces-${xerces.version}.jar" />
<property name="clover.jar" location="${clover.home}/lib/clover.jar" />
<available property="clover.present" file="${clover.jar}" />
</target>
<target name="ivy-download-local" description="To download ivy" unless="offline">
<get src="${ivy_repo_url}" dest="${ivy.jar}" usetimestamp="true" />
</target>
<target name="ivy-init-dirs-local" depends="ivy-init-properties-local">
<mkdir dir="${build.ivy.dir}" />
<mkdir dir="${build.ivy.lib.dir}" />
<mkdir dir="${build.ivy.report.dir}" />
</target>
<target name="ivy-probe-antlib-local">
<condition property="ivy.found.local">
<typefound uri="antlib:org.apache.ivy.ant" name="cleancache" />
</condition>
</target>
<target name="ivy-init-antlib-local" depends="ivy-init-dirs-local,ivy-download-local,ivy-probe-antlib-local" unless="ivy.found.local">
<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-local" depends="ivy-init-antlib-local">
<ivy:configure settingsid="${ant.project.name}.ivy.settings" file="${ivysettings.xml}" override="true" />
</target>
<target name="ivy-retrieve" depends="ivy-resolve" 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="contrib-classpath" conf="common" />
</target>
<target name="ivy-resolve" depends="ivy-init-local">
<ivy:resolve settingsRef="${ant.project.name}.ivy.settings" />
</target>
<target name="ivy-resolve-javadoc" depends="ivy-init-local">
<ivy:resolve settingsRef="${ant.project.name}.ivy.settings" conf="javadoc" />
</target>
<target name="ivy-resolve-checkstyle" depends="ivy-init-local">
<ivy:resolve settingsRef="${ant.project.name}.ivy.settings" conf="checkstyle" />
</target>
<target name="ivy-retrieve-checkstyle" depends="ivy-resolve-checkstyle" description="Retrieve Ivy-managed artifacts for the checkstyle configurations">
<ivy:retrieve settingsRef="${ant.project.name}.ivy.settings" pattern="${build.ivy.lib.dir}/${ivy.artifact.retrieve.pattern}" />
<ivy:cachepath pathid="checkstyle-classpath" conf="checkstyle" />
</target>
<target name="ivy-resolve-test" depends="ivy-init-local">
<ivy:resolve settingsRef="${ant.project.name}.ivy.settings" conf="test" />
</target>
<target name="ivy-resolve-common" depends="ivy-init-local">
<ivy:resolve settingsRef="${ant.project.name}.ivy.settings" conf="common" />
</target>
<target name="ivy-resolve-jdiff" depends="ivy-init-local">
<ivy:resolve settingsRef="${ant.project.name}.ivy.settings" conf="jdiff" />
</target>
<target name="ivy-retrieve-jdiff" depends="ivy-resolve-jdiff" description="Retrieve Ivy-managed artifacts for the javadoc configurations">
<ivy:retrieve settingsRef="${ant.project.name}.ivy.settings" pattern="${build.ivy.lib.dir}/${ivy.artifact.retrieve.pattern}" />
<ivy:cachepath pathid="jdiff-classpath" conf="jdiff" />
</target>
<target name="ivy-retrieve-javadoc" depends="ivy-resolve-javadoc" description="Retrieve Ivy-managed artifacts for the javadoc configurations">
<ivy:retrieve settingsRef="${ant.project.name}.ivy.settings" pattern="${build.ivy.lib.dir}/${ivy.artifact.retrieve.pattern}" />
<ivy:cachepath pathid="javadoc-classpath" conf="javadoc" />
</target>
<target name="ivy-retrieve-test" depends="ivy-resolve-test" description="Retrieve Ivy-managed artifacts for the test configurations">
<ivy:retrieve settingsRef="${ant.project.name}.ivy.settings" pattern="${build.ivy.lib.dir}/${ivy.artifact.retrieve.pattern}" />
<ivy:cachepath pathid="test.classpath" conf="test" />
</target>
<target name="ivy-retrieve-common" depends="ivy-resolve-common" description="Retrieve Ivy-managed artifacts for the compile configurations">
<ivy:retrieve settingsRef="${ant.project.name}.ivy.settings" pattern="${build.ivy.lib.dir}/${ivy.artifact.retrieve.pattern}" />
<ivy:cachepath pathid="ivy-common.classpath" conf="common" />
</target>
<target name="ivy-report" depends="ivy-resolve-releaseaudit" description="Generate">
<ivy:report todir="${build.ivy.report.dir}" settingsRef="${ant.project.name}.ivy.settings" />
<echo>
Reports generated:${build.ivy.report.dir}
</echo>
</target>
<target name="init" depends="">
<mkdir dir="${build.dir}" />
<mkdir dir="${build.classes}" />
<mkdir dir="${build.dir}/test" />
</target>
<target name="main" depends="init,compile,jar" description="Main target">
<echo>
Building the .jar files.
</echo>
</target>
<target name="compile" depends="compile-src,jar" description="Compile">
</target>
<target name="compile-src" depends="init" description="Compile">
<javac srcdir="src/java" destdir="${build.classes}" debug="${javac.debug}">
<compilerarg value="-Xlint" />
<include name="edu/berkeley/chukwa_xtrace/**" />
<classpath refid="xtr-classpath" />
</javac>
</target>
<target name="jar" depends="compile-src" description="Create chukwa-xtrace.jar">
<jar jarfile="${build.dir}/chukwa-xtrace.jar" basedir="${build.classes}" includes="edu/berkeley/chukwa_xtrace/**/*.class">
<fileset dir="${basedir}/src/java">
<include name="edu/berkeley/chukwa_xtrace/*.java" />
</fileset>
</jar>
<copy file="${build.dir}/chukwa-xtrace.jar" tofile="${basedir}/chukwa-xtrace.jar" />
</target>
<path id="xtr-classpath">
<pathelement location="${build.classes}" />
<pathelement location="${test.build.classes}" />
<pathelement location="${chukwa.root.build.classes}" />
<fileset dir="${basedir}/lib">
<include name="**/*.jar" />
<exclude name="**/excluded/" />
</fileset>
<fileset dir="../../build/">
<include name="chukwa*.jar" />
<exclude name="**/excluded/" />
</fileset>
<fileset dir="../../hadoopjars/">
<include name="hadoop*.jar" />
<exclude name="**/excluded/" />
</fileset>
<fileset dir="../../build/ivy/lib/chukwa/common/">
<include name="**/*.jar" />
<exclude name="**/excluded/" />
</fileset>
</path>
<target name="compile-test" depends="init,compile,jar" description="Test target">
<echo>*** Building Test Sources ***</echo>
<echo>*** ${build.classes} ***</echo>
<mkdir dir="${test.log.dir}"/>
<mkdir dir="${test.build.dir}" />
<mkdir dir="${test.log.dir}" />
<mkdir dir="${test.build.classes}" />
<javac srcdir="test/src/java" destdir="${test.build.classes}" debug="${javac.debug}">
<compilerarg value="-Xlint" />
<include name="edu/berkeley/chukwa_xtrace/**" />
<classpath refid="xtr-classpath" />
</javac>
</target>
<target name="test" depends="init,compile-test" description="chukwa-xtrace tests">
<delete dir="${test.log.dir}"/>
<mkdir dir="${test.log.dir}"/>
<echo>*** ${test.build.classes} *** ${chukwa.root.build.dir} ***</echo>
<junit showoutput="${test.output}" printsummary="yes" haltonfailure="no" fork="yes"
maxmemory="256m"
dir="${basedir}"
timeout="${test.timeout}"
errorProperty="tests.failed"
failureProperty="tests.failed">
<sysproperty key="chukwa.root.build.dir" value="${chukwa.root.build.dir}" />
<sysproperty key="chukwa-xtr.build.dir" value="${build.dir}" />
<sysproperty key="hod.server" value="" />
<sysproperty key="hadoop.log.dir" value="${test.log.dir}"/>
<classpath>
<pathelement location="${build.classes}" />
<pathelement location="${test.build.classes}" />
<path refid="xtr-classpath"/>
</classpath>
<formatter type="${test.junit.output.format}" />
<batchtest fork="yes" todir="${test.log.dir}" unless="testcase">
<fileset dir="${test.src.dir}">
<include name="**/${test.include}.java" />
<exclude name="**/${test.exclude}.java" />
</fileset>
</batchtest>
<batchtest todir="${test.log.dir}" if="testcase">
<fileset dir="${test.src.dir}" includes="**/${testcase}.java">
</fileset>
</batchtest>
</junit>
<fail if="tests.failed">Tests failed!</fail>
</target>
<!-- ================================================================== -->
<!-- Clean. Delete the build files, and their directories -->
<!-- ================================================================== -->
<target name="clean" depends="init" description="Clean. Delete the build files, and their directories">
<delete dir="${build.dir}" />
<delete dir="${build.ivy.lib.dir}/${ant.project.home}" />
<delete dir="build" />
<delete file="${ivy.jar}" />
<delete dir="${docs.src}/build" />
<delete dir="${test.build.dir}" />
<delete dir="${test.log.dir}" />
<delete dir="${test.build.classes}" />
<delete file="${basedir}/chukwa-xtr.jar" />
</target>
<!-- ================================================================== -->
<!-- Perform audit activities for the release -->
<!-- ================================================================== -->
<target name="releaseaudit" depends="ivy-retrieve-releaseaudit" description="Release Audit activities">
<java classname="${rat.reporting.classname}" fork="true">
<classpath refid="releaseaudit-classpath" />
<arg value="${build.dir}/${final.name}" />
</java>
</target>
<target name="ivy-retrieve-releaseaudit" depends="ivy-resolve-releaseaudit" description="Retrieve Ivy-managed artifacts for the compile configurations">
<ivy:retrieve settingsRef="${ant.project.name}.ivy.settings" pattern="${build.ivy.lib.dir}/${ivy.artifact.retrieve.pattern}" />
<ivy:cachepath pathid="releaseaudit-classpath" conf="releaseaudit" />
</target>
<target name="ivy-resolve-releaseaudit" depends="ivy-init-local">
<ivy:resolve settingsRef="${ant.project.name}.ivy.settings" conf="releaseaudit" />
</target>
</project>