| <?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="hama" default="jar"> |
| <property name="version" value="0.2.0" /> |
| <property name="Name" value="Hama" /> |
| <property name="final.name" value="hama-${version}" /> |
| <property name="year" value="2011" /> |
| |
| <!-- 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="${basedir}/build.properties" /> |
| |
| <property name="src.dir" location="${basedir}/src/java" /> |
| <property name="src.test" location="${basedir}/src/test" /> |
| <property name="src.examples" location="${basedir}/src/examples" /> |
| |
| <property name="lib.dir" value="${basedir}/lib" /> |
| <property name="conf.dir" value="${basedir}/conf" /> |
| <property name="docs.dir" value="${basedir}/docs" /> |
| <property name="docs.src" value="${basedir}/src/docs" /> |
| |
| <!-- build properties --> |
| |
| <property name="test.output" value="no" /> |
| <property name="test.timeout" value="600000" /> |
| |
| <property name="build.dir" location="${basedir}/build" /> |
| <property name="build.lib" location="${build.dir}/lib" /> |
| <property name="build.classes" location="${build.dir}/classes" /> |
| <property name="build.test" location="${build.dir}/test" /> |
| <property name="build.examples" location="${build.dir}/examples" /> |
| <property name="build.docs" value="${build.dir}/docs/site" /> |
| <property name="build.javadoc" value="${build.docs}/api" /> |
| <property name="build.encoding" value="ISO-8859-1" /> |
| <property name="build.src" value="${build.dir}/src" /> |
| |
| <property name="build.report" value="${build.dir}/reports" /> |
| <property name="build.report.tests" value="${build.report}/tests" /> |
| |
| <property name="test.build.dir" value="${build.dir}/test" /> |
| <property name="test.junit.output.format" value="plain" /> |
| |
| <property name="dist.dir" value="${build.dir}/${final.name}" /> |
| |
| <property name="javac.deprecation" value="off" /> |
| <property name="javac.debug" value="on" /> |
| |
| <property name="javadoc.link.java" value="http://download.oracle.com/javase/6/docs/api/" /> |
| <property name="javadoc.packages" value="org.apache.hama.*" /> |
| |
| <fileset id="lib.jars" dir="${basedir}" includes="lib/*.jar" /> |
| <path id="classpath"> |
| <fileset refid="lib.jars" /> |
| <pathelement location="${build.classes}" /> |
| <pathelement location="${conf.dir}" /> |
| </path> |
| |
| <target name="init"> |
| <mkdir dir="${build.dir}" /> |
| <mkdir dir="${build.classes}" /> |
| <mkdir dir="${build.test}" /> |
| <mkdir dir="${build.examples}" /> |
| <mkdir dir="${build.report.tests}" /> |
| <!--Copy bin, lib, and conf. too--> |
| <mkdir dir="${build.lib}" /> |
| <copy todir="${build.lib}"> |
| <fileset dir="${lib.dir}" /> |
| </copy> |
| |
| <tempfile property="touch.temp.file" destDir="${java.io.tmpdir}"/> |
| <touch millis="0" file="${touch.temp.file}"> |
| <fileset dir="${conf.dir}" includes="**/*.template"/> |
| </touch> |
| <delete file="${touch.temp.file}"/> |
| |
| <copy todir="${conf.dir}" verbose="true"> |
| <fileset dir="${conf.dir}" includes="**/*.template"/> |
| <mapper type="glob" from="*.template" to="*"/> |
| </copy> |
| |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Java Compiler Compiler, generate Parsers --> |
| <!-- ================================================================== --> |
| |
| <target name="compile" depends="init"> |
| <!--Compile whats under src and generated java classes made from jsp--> |
| <mkdir dir="${build.src}" /> |
| <javac encoding="${build.encoding}" srcdir="${src.dir};${build.src};${src.examples}" includes="**/*.java" destdir="${build.classes}" debug="${javac.debug}" deprecation="${javac.deprecation}" includeantruntime="false"> |
| <classpath refid="classpath" /> |
| </javac> |
| </target> |
| |
| <target name="compile-examples" depends="compile"> |
| <javac encoding="${build.encoding}" srcdir="${src.examples}" includes="**/*.java" destdir="${build.examples}" debug="${javac.debug}" deprecation="${javac.deprecation}" includeantruntime="false"> |
| <classpath refid="classpath" /> |
| </javac> |
| </target> |
| |
| <!-- Override jar target to specify main class --> |
| <target name="jar" depends="compile"> |
| <jar jarfile="${build.dir}/${final.name}.jar" basedir="${build.classes}"> |
| </jar> |
| </target> |
| |
| <target name="examples" depends="jar, compile-examples" description="Make the hama examples jar."> |
| <jar jarfile="${build.dir}/${final.name}-examples.jar" basedir="${build.examples}"> |
| <manifest> |
| <attribute name="Main-Class" value="org/apache/hama/examples/ExampleDriver" /> |
| </manifest> |
| </jar> |
| </target> |
| |
| <target name="package" depends="jar,javadoc,examples,compile-test" description="Build distribution"> |
| <mkdir dir="${dist.dir}" /> |
| <mkdir dir="${dist.dir}/lib"/> |
| <mkdir dir="${dist.dir}/bin"/> |
| <mkdir dir="${dist.dir}/docs"/> |
| <mkdir dir="${dist.dir}/docs/api"/> |
| |
| <copy todir="${dist.dir}" includeEmptyDirs="false" flatten="true"> |
| <fileset dir="${build.dir}"> |
| <include name="${final.name}.jar" /> |
| <include name="${final.name}-examples.jar" /> |
| <include name="${final.name}-test.jar" /> |
| </fileset> |
| </copy> |
| |
| <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}/lib"> |
| <fileset dir="${build.lib}" /> |
| </copy> |
| |
| <copy todir="${dist.dir}/docs"> |
| <fileset dir="${build.docs}"/> |
| </copy> |
| |
| <copy todir="${dist.dir}"> |
| <fileset dir="."> |
| <include name="*.txt" /> |
| </fileset> |
| </copy> |
| <copy todir="${dist.dir}/" file="build.xml"/> |
| <copy todir="${dist.dir}/" file="pom.xml"/> |
| |
| <mkdir dir="${dist.dir}/src" /> |
| <copy todir="${dist.dir}/src" includeEmptyDirs="true"> |
| <fileset dir="src" excludes="**/*.template **/docs/build/**/*" /> |
| </copy> |
| |
| |
| <chmod perm="ugo+x" type="file" parallel="false"> |
| <fileset dir="${dist.dir}/bin"/> |
| </chmod> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Make release tarball --> |
| <!-- ================================================================== --> |
| <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> |
| <target name="tar" depends="package" description="Make release tarball"> |
| <macro_tar param.destfile="${build.dir}/${final.name}.tar.gz"> |
| <param.listofitems> |
| <tarfileset dir="${build.dir}" mode="664"> |
| <exclude name="${final.name}/bin/*" /> |
| <include name="${final.name}/**" /> |
| </tarfileset> |
| <tarfileset dir="${build.dir}" mode="755"> |
| <include name="${final.name}/bin/*" /> |
| </tarfileset> |
| </param.listofitems> |
| </macro_tar> |
| </target> |
| |
| <target name="binary" depends="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"> |
| <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> |
| |
| <!-- ================================================================== --> |
| <!-- Doc --> |
| <!-- ================================================================== --> |
| <target name="docs" depends="forrest.check" description="Generate forrest-based documentation. To use, specify -Dforrest.home=<base of Apache Forrest installation> on the command line." if="forrest.home"> |
| <exec dir="${docs.src}" executable="${forrest.home}/bin/forrest" failonerror="true"> |
| </exec> |
| <copy todir="${build.docs}"> |
| <fileset dir="${docs.src}/build/site/" /> |
| </copy> |
| <delete dir="${docs.src}/build/" /> |
| </target> |
| |
| <target name="forrest.check" unless="forrest.home"> |
| <fail message="'forrest.home' is not defined. Please pass -Dforrest.home=<base of Apache Forrest installation> to Ant on the command-line." /> |
| </target> |
| |
| <!-- javadoc-classpath --> |
| <!-- This is going to stay back until we use a mechanism for automatic dependency management --> |
| <path id="javadoc-classpath"> |
| <fileset file="${lib.dir}/hadoop*.jar" /> |
| <fileset file="${lib.dir}/zookeeper*.jar" /> |
| <fileset file="${lib.dir}/commons*.jar" /> |
| <fileset file="${lib.dir}/log4j*.jar" /> |
| <fileset file="${lib.dir}/junit-3.8.1.jar" /> |
| </path> |
| |
| <!-- Javadoc --> |
| <target name="javadoc" description="Generate javadoc"> |
| <mkdir dir="${build.javadoc}" /> |
| <javadoc overview="${src.dir}/overview.html" packagenames="org.apache.hama.*" destdir="${build.javadoc}" author="true" version="true" use="true" windowtitle="${Name} ${version} API" doctitle="${Name} ${version} API" bottom="Copyright &copy; ${year} The Apache Software Foundation"> |
| <packageset dir="${src.dir}"> |
| <include name="org/apache/**" /> |
| </packageset> |
| <link href="${javadoc.link.java}" /> |
| <classpath> |
| <path refid="javadoc-classpath" /> |
| </classpath> |
| <group title="${Name}" packages="org.apache.hama.*" /> |
| </javadoc> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Run unit tests --> |
| <!-- ================================================================== --> |
| <path id="test.classpath"> |
| <pathelement location="${conf.dir}" /> |
| <pathelement location="${src.test}" /> |
| <pathelement location="${build.test}" /> |
| <path refid="classpath" /> |
| <pathelement location="${build.dir}" /> |
| </path> |
| |
| <target name="compile-test" depends="compile"> |
| <javac encoding="${build.encoding}" srcdir="${src.test}" includes="**/*.java" destdir="${build.test}" debug="${javac.debug}" includeantruntime="false"> |
| <classpath refid="test.classpath" /> |
| </javac> |
| <jar jarfile="${build.dir}/${final.name}-test.jar"> |
| <fileset dir="${build.test}" includes="org/**" /> |
| <fileset dir="${build.classes}" /> |
| <fileset dir="${src.test}" includes="**/*.properties" /> |
| <manifest> |
| <attribute name="Main-Class" value="org/apache/hama/Utils" /> |
| </manifest> |
| </jar> |
| </target> |
| |
| <target name="test" depends="compile, compile-test"> |
| <junit printsummary="yes" showoutput="${test.output}" haltonfailure="no" fork="yes" maxmemory="512m" errorProperty="tests.failed" failureProperty="tests.failed" timeout="${test.timeout}"> |
| <classpath refid="test.classpath" /> |
| <formatter type="${test.junit.output.format}" /> |
| <batchtest todir="${build.report.tests}" unless="testcase"> |
| <fileset dir="${src.test}" includes="**/Test*.java" excludes="**/${test.exclude}.java" /> |
| </batchtest> |
| <batchtest todir="${build.report.tests}" if="testcase"> |
| <fileset dir="${src.test}" includes="**/${testcase}.java" excludes="**/${test.exclude}.java" /> |
| </batchtest> |
| </junit> |
| <fail if="tests.failed">Tests failed!</fail> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Clean. Delete the build files, and their directories --> |
| <!-- ================================================================== --> |
| <target name="clean"> |
| <delete dir="${build.dir}" /> |
| </target> |
| </project> |