| <?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="hive" default="deploy" > |
| |
| <property name="hive.root" location="${basedir}"/> |
| <property file="${hive.root}/build.properties"/> |
| <property file="${user.home}/build.properties" /> |
| <property file="${basedir}/build.properties" /> |
| |
| <property name="target.dir" location="${build.dir.hive}/dist"/> |
| <property name="target.lib.dir" location="${target.dir}/lib"/> |
| <property name="target.conf.dir" location="${target.dir}/conf"/> |
| <property name="target.bin.dir" location="${target.dir}/bin"/> |
| <property name="target.example.dir" location="${target.dir}/examples"/> |
| <property name="ql.test.query.dir" location="${basedir}/ql/src/test/queries"/> |
| <property name="test.data.dir" location="${basedir}/data"/> |
| <property name="test.build.dir" value="${build.dir.hive}/test"/> |
| <property name="build.docs" value="${target.dir}/docs"/> |
| <property name="build.javadoc" value="${build.docs}/api"/> |
| <property name="docs.src" value="${hive.root}/docs"/> |
| <property name="changes.src" value="${docs.src}/changes"/> |
| <property name="images.src" value="${docs.src}/images"/> |
| <property name="javadoc.link.java" |
| value="http://java.sun.com/javase/6/docs/api/"/> |
| <property name="final.name" value="${name}-${version}-hadoop-${hadoop.version}"/> |
| <property name="dev.final.name" value="${final.name}-dev"/> |
| <property name="bin.final.name" value="${final.name}-bin"/> |
| |
| <!-- ====================================================== --> |
| <!-- Macro definitions --> |
| <!-- ====================================================== --> |
| <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> |
| |
| <!-- the normal classpath --> |
| <path id="common-classpath"> |
| <pathelement location="${hadoop.jar}"/> |
| <pathelement location="${build.dir.hive}/classes"/> |
| <fileset dir="${hive.root}" includes="hive_*.jar"/> |
| <fileset dir="${hive.root}/lib" includes="*.jar"/> |
| <fileset dir="${hive.root}/ql/lib" includes="*.jar"/> |
| </path> |
| |
| <path id="classpath"> |
| <pathelement location="${build.dir.hive}/common/classes"/> |
| <pathelement location="${build.dir.hive}/serde/classes"/> |
| <pathelement location="${build.dir.hive}/metastore/classes"/> |
| <pathelement location="${build.dir.hive}/ql/classes"/> |
| <pathelement location="${build.dir.hive}/cli/classes"/> |
| <fileset dir="${hive.root}/data" includes="files/*.jar"/> |
| <fileset dir="${hive.root}/ql" includes="lib/*.jar"/> |
| <fileset dir="${hive.root}/cli" includes="lib/*.jar"/> |
| <fileset dir="${hive.root}/service" includes="lib/*.jar"/> |
| <path refid="common-classpath"/> |
| </path> |
| |
| <!-- ====================================================== --> |
| <!-- Initialize for running junit tests --> |
| <!-- ====================================================== --> |
| |
| <target name="init"> |
| <subant target="init"> |
| <fileset dir="." includes="*/build.xml"/> |
| </subant> |
| </target> |
| |
| <target name="test-init"> |
| <subant target="test-init"> |
| <fileset dir="." includes="*/build.xml"/> |
| </subant> |
| </target> |
| |
| |
| <!-- ====================================================== --> |
| <!-- Compile all the contrib jars. --> |
| <!-- ====================================================== --> |
| |
| <target name="compile"> |
| <subant target="compile"> |
| <fileset dir="." includes="common/build.xml"/> |
| </subant> |
| <subant target="compile"> |
| <fileset dir="." includes="serde/build.xml"/> |
| </subant> |
| <subant target="compile"> |
| <fileset dir="." includes="metastore/build.xml"/> |
| </subant> |
| <subant target="compile"> |
| <fileset dir="." includes="ql/build.xml"/> |
| </subant> |
| <subant target="compile"> |
| <fileset dir="." includes="cli/build.xml"/> |
| </subant> |
| <subant target="compile"> |
| <fileset dir="." includes="service/build.xml"/> |
| </subant> |
| <subant target="compile"> |
| <fileset dir="." includes="jdbc/build.xml"/> |
| </subant> |
| <subant target="compile"> |
| <fileset dir="." includes="hwi/build.xml"/> |
| </subant> |
| </target> |
| |
| <!-- ====================================================== --> |
| <!-- Build & deploy all the contrib jars. --> |
| <!-- ====================================================== --> |
| |
| <target name="deploy"> |
| <subant target="deploy"> |
| <fileset dir="." includes="common/build.xml"/> |
| </subant> |
| <subant target="deploy"> |
| <fileset dir="." includes="serde/build.xml"/> |
| </subant> |
| <subant target="deploy"> |
| <fileset dir="." includes="metastore/build.xml"/> |
| </subant> |
| <subant target="deploy"> |
| <fileset dir="." includes="ql/build.xml"/> |
| </subant> |
| <subant target="deploy"> |
| <fileset dir="." includes="cli/build.xml"/> |
| </subant> |
| <subant target="deploy"> |
| <fileset dir="." includes="service/build.xml"/> |
| </subant> |
| <subant target="deploy"> |
| <fileset dir="." includes="jdbc/build.xml"/> |
| </subant> |
| <subant target="deploy"> |
| <fileset dir="." includes="hwi/build.xml"/> |
| </subant> |
| </target> |
| |
| <!-- ====================================================== --> |
| <!-- Test everything. --> |
| <!-- ====================================================== --> |
| <target name="test" depends="clean-test,deploy"> |
| <subant target="test"> |
| <fileset dir="." includes="*/build.xml" excludes="ant/build.xml"/> |
| </subant> |
| </target> |
| |
| <!-- create an html report from junit output files --> |
| <target name="testreport"> |
| <junitreport todir="${test.build.dir}"> |
| <fileset dir="${build.dir.hive}"> |
| <include name="**/TEST-*.xml"/> |
| </fileset> |
| <report format="noframes" todir="${test.build.dir}"/> |
| </junitreport> |
| </target> |
| |
| <target name="clean-test"> |
| <subant target="clean-test"> |
| <fileset dir="." includes="*/build.xml" excludes="ant/build.xml"/> |
| </subant> |
| <delete dir="${build.dir.hive}/test"/> |
| </target> |
| |
| <!-- ====================================================== --> |
| <!-- Clean everything. --> |
| <!-- ====================================================== --> |
| <target name="clean"> |
| <subant target="clean"> |
| <fileset dir="." includes="*/build.xml"/> |
| </subant> |
| <delete dir="${target.dir}"/> |
| <delete dir="${build.dir.hive}"/> |
| </target> |
| |
| <!-- ====================================================== --> |
| <!-- Generate some of the test data. --> |
| <!-- ====================================================== --> |
| <target name="gen-testdata" depends="deploy"> |
| <subant target="gen-testdata"> |
| <fileset dir="." includes="serde/build.xml"/> |
| </subant> |
| </target> |
| |
| <target name="package" depends="deploy"> |
| <echo message="Deploying Hive jars to ${target.dir}"/> |
| <mkdir dir="${target.dir}"/> |
| <mkdir dir="${target.lib.dir}"/> |
| <mkdir dir="${target.conf.dir}"/> |
| <mkdir dir="${target.bin.dir}"/> |
| <mkdir dir="${target.example.dir}"/> |
| <mkdir dir="${target.example.dir}/files"/> |
| <mkdir dir="${target.example.dir}/queries"/> |
| <mkdir dir="${target.lib.dir}/py"/> |
| <mkdir dir="${target.lib.dir}/php"/> |
| <copy file="${hive.root}/bin/hive" todir="${target.bin.dir}"/> |
| <copy todir="${target.bin.dir}/ext"> |
| <fileset dir="${hive.root}/bin/ext" excludes="**/.svn"/> |
| </copy> |
| <copy file="${hive.root}/bin/hive-config.sh" todir="${target.bin.dir}"/> |
| <copy file="${basedir}/conf/hive-default.xml" todir="${target.conf.dir}"/> |
| <copy file="${basedir}/conf/hive-log4j.properties" todir="${target.conf.dir}"/> |
| <copy file="${basedir}/conf/jpox.properties" todir="${target.conf.dir}"/> |
| <copy todir="${target.lib.dir}/php"> |
| <fileset dir="${hive.root}/serde/src/gen-php" excludes="**/.svn"/> |
| <fileset dir="${hive.root}/metastore/src/gen-php" excludes="**/.svn"/> |
| </copy> |
| <!-- Create the python thrift package --> |
| <copy todir="${target.lib.dir}/py"> |
| <fileset dir="${hive.root}/service/lib/py" excludes="**/.svn"/> |
| </copy> |
| <copy todir="${target.lib.dir}/py/hive_serde"> |
| <fileset dir="${hive.root}/serde/src/gen-py/org_apache_hadoop_hive_serde" excludes="**/.svn"/> |
| </copy> |
| <copy todir="${target.lib.dir}/py/hive_metastore"> |
| <fileset dir="${hive.root}/metastore/src/gen-py/hive_metastore" excludes="**/.svn"/> |
| </copy> |
| <copy todir="${target.lib.dir}/py/hive_service"> |
| <fileset dir="${hive.root}/service/src/gen-py/hive_service" excludes="**/.svn"/> |
| </copy> |
| <copy todir="${target.lib.dir}" preservelastmodified="true" flatten="true"> |
| <fileset dir="${hive.root}" includes="*/*.jar, */*/*.jar" excludes="**/antlr-2*,**/antlr-3*"/> |
| <fileset file="${build.dir.hive}/cli/hive_cli.jar"/> |
| <fileset file="${build.dir.hive}/common/hive_common.jar"/> |
| <fileset file="${build.dir.hive}/ql/hive_exec.jar"/> |
| <fileset file="${build.dir.hive}/metastore/hive_metastore.jar"/> |
| <fileset file="${build.dir.hive}/hive_hwi.war"/> |
| </copy> |
| <copy todir="${target.example.dir}/files" preservelastmodified="true" flatten="true"> |
| <fileset dir="${test.data.dir}/files" includes="*.*" excludes="**/.svn"/> |
| </copy> |
| <copy file="${basedir}/README.txt" todir="${target.dir}"/> |
| <copy todir="${target.example.dir}/queries" preservelastmodified="true" flatten="true"> |
| <fileset dir="${ql.test.query.dir}/positive" includes="*.q" excludes="**/.svn"/> |
| </copy> |
| <chmod perm="ugo+x" type="file" parallel="false"> |
| <fileset dir="${target.bin.dir}"/> |
| </chmod> |
| </target> |
| |
| <!-- ====================================================== --> |
| <!-- Generate files for eclipse. --> |
| <!-- ====================================================== --> |
| <target name="eclipse-files" depends="init" |
| description="Generate files for Eclipse"> |
| |
| <condition property="hadoop.version" value="0.19"> |
| <not> |
| <isset property="hadoop.version"/> |
| </not> |
| </condition> |
| <echo message="Using hadoop version ${hadoop.version}"/> |
| |
| <pathconvert property="eclipse.project"> |
| <path path="${basedir}"/> |
| <regexpmapper from="^.*/([^/]+)$$" to="\1" handledirsep="yes"/> |
| </pathconvert> |
| <copy todir="." overwrite="true"> |
| <fileset dir="eclipse-templates"> |
| <exclude name="**/README.txt"/> |
| <exclude name="**/.svn"/> |
| </fileset> |
| <filterset> |
| <filter token="PROJECT" value="${eclipse.project}"/> |
| <filter token="HADOOPVER" value="${hadoop.version}"/> |
| </filterset> |
| </copy> |
| <move todir="." includeemptydirs="false"> |
| <fileset dir="."> |
| <include name="*.launchtemplate"/> |
| </fileset> |
| <mapper type="glob" from="*.launchtemplate" to="*.launch"/> |
| </move> |
| |
| </target> |
| |
| <target name="clean-eclipse-files" |
| description="Delete files for Eclipse"> |
| <delete includeemptydirs="true"> |
| <fileset dir="." includes=".classpath .project .settings/ .externalToolBuilders/"/> |
| </delete> |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Documentation --> |
| <!-- ================================================================== --> |
| |
| <target name="docs"> |
| <antcall target="changes-to-html"/> |
| </target> |
| |
| <target name="changes-to-html" description="Convert CHANGES.txt into an html file"> |
| <mkdir dir="${build.docs}"/> |
| <exec executable="perl" input="CHANGES.txt" |
| output="${build.docs}/changes.html" failonerror="true"> |
| <arg value="${changes.src}/changes2html.pl"/> |
| </exec> |
| <copy todir="${build.docs}"> |
| <fileset dir="${changes.src}" includes="*.css"/> |
| </copy> |
| <copy todir="${build.docs}/images"> |
| <fileset dir="${images.src}" includes="*.jpg"/> |
| </copy> |
| </target> |
| |
| <target name="javadoc" depends="package" description="Generate javadoc"> |
| |
| <mkdir dir="${build.javadoc}"/> |
| <javadoc |
| packagenames="org.apache.hadoop.hive.*" |
| 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="ant/src"/> |
| <packageset dir="hwi/src/java"/> |
| <packageset dir="hwi/src/test"/> |
| <packageset dir="common/src/java"/> |
| <packageset dir="service/src/java"/> |
| <packageset dir="service/src/test"/> |
| <packageset dir="service/src/gen-javabean"/> |
| <packageset dir="serde/src/java"/> |
| <packageset dir="serde/src/test"/> |
| <packageset dir="serde/src/gen-java"/> |
| <packageset dir="jdbc/src/java"/> |
| <packageset dir="jdbc/src/test"/> |
| <packageset dir="metastore/src/java"/> |
| <packageset dir="metastore/src/test"/> |
| <packageset dir="metastore/src/gen-javabean"/> |
| <packageset dir="metastore/src/model"/> |
| <packageset dir="cli/src/java"/> |
| <packageset dir="${build.dir.hive}/ql/java"/> |
| <packageset dir="${build.dir.hive}/ql/gen-java"/> |
| |
| <link href="${javadoc.link.java}"/> |
| |
| <classpath > |
| <fileset dir="${hadoop.root}/lib"> |
| <include name="**/*.jar" /> |
| <exclude name="**/excluded/" /> |
| </fileset> |
| <path refid="classpath" /> |
| <pathelement path="${java.class.path}"/> |
| </classpath> |
| |
| <group title="Hive" packages="org.apache.*"/> |
| </javadoc> |
| |
| </target> |
| |
| <!-- ================================================================== --> |
| <!-- Make release tarball --> |
| <!-- ================================================================== --> |
| <target name="tar" depends="package, docs, javadoc" description="Make release tarball"> |
| <macro_tar param.destfile="${build.dir.hive}/${dev.final.name}.tar.gz"> |
| <param.listofitems> |
| <tarfileset dir="${build.dir.hive}/dist" mode="755" prefix="${dev.final.name}"> |
| <include name="bin/**"/> |
| </tarfileset> |
| <tarfileset dir="${build.dir.hive}/dist" mode="755" prefix="${dev.final.name}"> |
| <include name="lib/py/**/*-remote"/> |
| </tarfileset> |
| <tarfileset dir="${build.dir.hive}/dist" mode="664" prefix="${dev.final.name}"> |
| <include name="**"/> |
| <exclude name="bin/**"/> |
| <exclude name="lib/py/**/*-remote"/> |
| </tarfileset> |
| <tarfileset dir="${hive.root}" mode="664" prefix="${dev.final.name}/src"> |
| <exclude name="build/**" /> |
| <exclude name="bin/**" /> |
| <exclude name="**/py/**/*-remote" /> |
| <exclude name="data/scripts/**" /> |
| <exclude name="metastore/scripts/**" /> |
| <exclude name="ql/src/test/scripts/**" /> |
| </tarfileset> |
| <tarfileset dir="${hive.root}" mode="755" prefix="${dev.final.name}/src"> |
| <include name="bin/**" /> |
| <include name="**/py/**/*-remote" /> |
| <include name="data/scripts/**" /> |
| <include name="metastore/scripts/**" /> |
| <include name="ql/src/test/scripts/**" /> |
| </tarfileset> |
| </param.listofitems> |
| </macro_tar> |
| </target> |
| |
| <target name="binary" depends="package, docs, javadoc" description="Make tarball without source and documentation"> |
| <macro_tar param.destfile="${build.dir.hive}/${bin.final.name}.tar.gz"> |
| <param.listofitems> |
| <tarfileset dir="${build.dir.hive}/dist" mode="755" prefix="${bin.final.name}"> |
| <include name="bin/**"/> |
| </tarfileset> |
| <tarfileset dir="${build.dir.hive}/dist" mode="755" prefix="${bin.final.name}"> |
| <include name="lib/py/**/*-remote"/> |
| </tarfileset> |
| <tarfileset dir="${build.dir.hive}/dist" mode="664" prefix="${bin.final.name}"> |
| <include name="**"/> |
| <exclude name="bin/**"/> |
| <exclude name="docs/**"/> |
| <exclude name="lib/py/**/*-remote"/> |
| </tarfileset> |
| </param.listofitems> |
| </macro_tar> |
| </target> |
| |
| </project> |