| <?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="hbase" default="jar"> |
| <property name="version" value="0.1.4-dev"/> |
| <property name="Name" value="HBase"/> |
| <property name="final.name" value="hbase-${version}"/> |
| <property name="year" value="2008"/> |
| |
| <!-- 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="src.webapps" location="${basedir}/src/webapps"/> |
| |
| <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"/> |
| |
| <property name="test.output" value="no"/> |
| <property name="test.timeout" value="600000"/> |
| |
| <property name="build.dir" location="${basedir}/build"/> |
| <property name="build.bin" location="${build.dir}/bin"/> |
| <property name="build.conf" location="${build.dir}/conf"/> |
| <property name="build.webapps" location="${build.dir}/webapps"/> |
| <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"/> |
| <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="generated.webapps.src" value="${build.src}"/> |
| |
| <property name="test.build.dir" value="${build.dir}/test"/> |
| <property name="test.log.dir" value="${test.build.dir}/logs"/> |
| <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://java.sun.com/j2se/1.5/docs/api/"/> |
| <property name="javadoc.packages" value="org.apache.hadoop.hbase.*"/> |
| |
| |
| <!--We need to have the hadoop jars ride in front of the hbase classes or we |
| get the below exceptions: |
| |
| [junit] java.io.FileNotFoundException: file:/Users/stack/Documents/checkouts/hbase/trunk/build/webapps/dfs |
| |
| When we move off 0.16.0 hadoop, fix HttpStatusServer |
| --> |
| <fileset id="lib.jars" dir="${basedir}" includes="lib/*.jar"/> |
| <path id="classpath"> |
| <fileset refid="lib.jars"/> |
| <fileset dir="${lib.dir}/jetty-ext/"> |
| <include name="*jar" /> |
| </fileset> |
| <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}"/> |
| |
| <!--Copy webapps over to build dir. Exclude jsp and generated-src java |
| classes --> |
| <mkdir dir="${build.webapps}"/> |
| <copy todir="${build.webapps}"> |
| <fileset dir="${src.webapps}"> |
| <exclude name="**/*.jsp" /> |
| <exclude name="**/.*" /> |
| <exclude name="**/*~" /> |
| </fileset> |
| </copy> |
| <!--Copy bin, lib, and conf. too--> |
| <mkdir dir="${build.lib}"/> |
| <copy todir="${build.lib}"> |
| <fileset dir="${lib.dir}" /> |
| </copy> |
| <mkdir dir="${build.conf}"/> |
| <copy todir="${build.conf}"> |
| <fileset dir="${basedir}/conf" /> |
| </copy> |
| <mkdir dir="${build.bin}"/> |
| <copy todir="${build.bin}"> |
| <fileset dir="${basedir}/bin" /> |
| </copy> |
| <chmod perm="ugo+x" type="file"> |
| <fileset dir="${build.bin}" /> |
| </chmod> |
| <exec executable="sh"> |
| <arg line="src/saveVersion.sh ${version}"/> |
| </exec> |
| </target> |
| |
| <target name="javacc" if="javacc.home"> |
| <echo message="javacc.home: ${javacc.home}"/> |
| <property name="hql.src.dir" |
| value="${src.dir}/org/apache/hadoop/hbase/hql" /> |
| <mkdir dir="${hql.src.dir}/generated" /> |
| <javacc |
| target="${hql.src.dir}/HQLParser.jj" |
| outputdirectory="${hql.src.dir}/generated" |
| javacchome="${javacc.home}" |
| /> |
| </target> |
| |
| <target name="compile" depends="init,jspc,javacc"> |
| <!--Compile whats under src and generated java classes made from jsp--> |
| <javac |
| encoding="${build.encoding}" |
| srcdir="${src.dir};${build.src}" |
| includes="**/*.java" |
| destdir="${build.classes}" |
| debug="${javac.debug}" |
| deprecation="${javac.deprecation}"> |
| <classpath refid="classpath"/> |
| </javac> |
| </target> |
| |
| <target name="jar" depends="compile"> |
| <!--Copy over any properties under src--> |
| <copy todir="${build.classes}"> |
| <fileset dir="${src.dir}"> |
| <include name="**/*.properties" /> |
| </fileset> |
| </copy> |
| <jar jarfile="${build.dir}/${final.name}.jar" |
| basedir="${build.classes}" > |
| <fileset file="${basedir}/conf/hbase-default.xml"/> |
| <zipfileset dir="${build.webapps}" prefix="webapps"/> |
| <manifest> |
| <attribute name="Main-Class" value="org/apache/hadoop/hbase/mapred/Driver" /> |
| </manifest> |
| </jar> |
| </target> |
| |
| <target name="jspc" > |
| <path id="jspc.classpath"> |
| <fileset dir="${basedir}/lib/jetty-ext/"> |
| <include name="*jar" /> |
| </fileset> |
| <fileset dir="${basedir}/lib/"> |
| <include name="servlet-api*jar" /> |
| <include name="commons-logging*jar" /> |
| </fileset> |
| </path> |
| <taskdef classname="org.apache.jasper.JspC" name="jspcompiler" > |
| <classpath refid="jspc.classpath"/> |
| </taskdef> |
| <jspcompiler |
| uriroot="${src.webapps}/master" |
| outputdir="${generated.webapps.src}" |
| package="org.apache.hadoop.hbase.generated.master" |
| webxml="${src.webapps}/master/WEB-INF/web.xml"> |
| </jspcompiler> |
| <jspcompiler |
| uriroot="${src.webapps}/regionserver" |
| outputdir="${generated.webapps.src}" |
| package="org.apache.hadoop.hbase.generated.regionserver" |
| webxml="${src.webapps}/regionserver/WEB-INF/web.xml"> |
| </jspcompiler> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Package --> |
| <!-- ================================================================== --> |
| <target name="package" depends="jar,javadoc,compile-test" |
| description="Build distribution"> |
| <mkdir dir="${dist.dir}"/> |
| <copy todir="${dist.dir}" includeEmptyDirs="false" flatten="true"> |
| <fileset dir="${build.dir}"> |
| <include name="${final.name}.jar" /> |
| <include name="${final.name}-test.jar" /> |
| </fileset> |
| </copy> |
| <mkdir dir="${dist.dir}/webapps"/> |
| <copy todir="${dist.dir}/webapps"> |
| <fileset dir="${build.webapps}" /> |
| </copy> |
| <mkdir dir="${dist.dir}/lib"/> |
| <copy todir="${dist.dir}/lib"> |
| <fileset dir="${build.lib}" /> |
| </copy> |
| <mkdir dir="${dist.dir}/conf" /> |
| <copy todir="${dist.dir}/conf"> |
| <fileset dir="${build.conf}" /> |
| </copy> |
| <mkdir dir="${dist.dir}/bin" /> |
| <copy todir="${dist.dir}/bin"> |
| <fileset dir="${build.bin}" /> |
| </copy> |
| <chmod perm="ugo+x" type="file"> |
| <fileset dir="${dist.dir}/bin" /> |
| </chmod> |
| <mkdir dir="${dist.dir}/docs" /> |
| <copy todir="${dist.dir}/docs"> |
| <fileset dir="${docs.dir}" /> |
| <fileset dir="${build.docs}"/> |
| </copy> |
| <copy todir="${dist.dir}"> |
| <fileset dir="."> |
| <include name="*.txt" /> |
| <include name="build.xml" /> |
| </fileset> |
| </copy> |
| <mkdir dir="${dist.dir}/src" /> |
| <copy todir="${dist.dir}/src" includeEmptyDirs="true"> |
| <fileset dir="src" excludes="**/*.template **/docs/build/**/*"/> |
| </copy> |
| </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" /> |
| <copy todir="${docs.dir}"> |
| <fileset dir="${docs.src}/build/site/" /> |
| </copy> |
| <style basedir="${conf.dir}" destdir="${docs.dir}" |
| includes="hadoop-default.xml" style="conf/configuration.xsl"/> |
| </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 --> |
| <target name="javadoc" description="Generate javadoc"> |
| <mkdir dir="${build.javadoc}"/> |
| <javadoc |
| overview="${src.dir}/overview.html" |
| packagenames="org.apache.hadoop.hbase.*" |
| 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/**"/> |
| <exclude name="org/onelab/**"/> |
| </packageset> |
| <link href="${javadoc.link.java}"/> |
| <classpath > |
| <path refid="classpath" /> |
| <pathelement path="${java.class.path}"/> |
| </classpath> |
| </javadoc> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Run unit tests --> |
| <!-- ================================================================== --> |
| <path id="test.classpath"> |
| <!-- ============ * * * * * N O T E * * * * * ============ |
| ${src.test} *must* come before rest of class path. Otherwise |
| the test hbase-site.xml will not be found. |
| ============ * * * * * N O T E * * * * * ============ --> |
| <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}"> |
| <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/hadoop/hbase/PerformanceEvaluation"/> |
| </manifest> |
| </jar> |
| </target> |
| |
| <target name="test" depends="compile-test, compile" > |
| <delete dir="${test.log.dir}"/> |
| <mkdir dir="${test.log.dir}"/> |
| <junit |
| printsummary="yes" showoutput="${test.output}" |
| haltonfailure="no" fork="yes" maxmemory="512m" |
| 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}"/> |
| |
| <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="test.log.dir" value="${hadoop.log.dir}"/> |
| <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"> |
| <delete dir="${build.dir}"/> |
| </target> |
| </project> |