blob: 98fabab467e1d01439e69c5d8a5b0a9f91037f09 [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="hive" default="jar" xmlns:artifact="urn:maven-artifact-ant" >
<property name="hive.root" location="${basedir}"/>
<property file="${hive.root}/build.properties"/>
<property file="${user.home}/build.properties" />
<property file="${basedir}/build.properties" />
<property environment="env"/>
<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.scripts.dir" location="${target.dir}/scripts"/>
<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="test.continue.on.failure" value="true"/>
<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="anakia.docs.src" value="${docs.src}/xdocs"/>
<property name="anakia.docs.dest" value="${target.dir}/docs"/>
<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}"/>
<property name="tar.final.name" value="${final.name}"/>
<property name="bin.final.name" value="${final.name}-bin"/>
<property name="vcs.excludes" value="**/.svn,**/.svn/**,**/.git,**/.git/**"/>
<property name="checkstyle.conf.dir" location="${hive.root}/checkstyle"/>
<property name="checkstyle.build.dir" location="${build.dir.hive}/checkstyle"/>
<property name="md5sum.format" value="{0} {1}"/>
<condition property="is-offline" value="true" else="false">
<isset property="offline"/>
</condition>
<!-- ForTask is not defined in net/sf/antcontrib/antcontrib.properties! -->
<taskdef name="for" classname="net.sf.antcontrib.logic.ForTask">
<classpath>
<pathelement location="${hive.root}/testlibs/ant-contrib-1.0b3.jar"/>
</classpath>
</taskdef>
<!-- ====================================================== -->
<!-- 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>
<checksum file="@{param.destfile}" algorithm="md5" pattern="${md5sum.format}"/>
</sequential>
</macrodef>
<macrodef name="iterate-cpp">
<attribute name="target"/>
<sequential>
<subant target="@{target}">
<property name="thrift.home" value="${thrift.home}"/>
<property name="build.dir.hive" location="${build.dir.hive}"/>
<!-- TODO filelist dir="." files="metastore/build.xml,serde/build.xml,service/build.xml,odbc/build.xml"/-->
<filelist dir="." files="odbc/build.xml"/>
</subant>
</sequential>
</macrodef>
<macrodef name="iterate-test">
<attribute name="target"/>
<sequential>
<subant target="@{target}">
<property name="thrift.home" value="${thrift.home}"/>
<property name="build.dir.hive" location="${build.dir.hive}"/>
<filelist dir="." files="ql/build.xml,contrib/build.xml,hbase-handler/build.xml,hwi/build.xml,jdbc/build.xml,metastore/build.xml,odbc/build.xml,serde/build.xml,service/build.xml"/>
</subant>
</sequential>
</macrodef>
<macrodef name="iterate-thriftif">
<attribute name="target"/>
<sequential>
<subant target="@{target}">
<property name="thrift.home" value="${thrift.home}"/>
<property name="build.dir.hive" location="${build.dir.hive}"/>
<filelist dir="." files="ql/build.xml,service/build.xml,metastore/build.xml,serde/build.xml"/>
</subant>
</sequential>
</macrodef>
<macrodef name="iterate-all">
<attribute name="target"/>
<sequential>
<subant target="@{target}">
<property name="build.dir.hive" location="${build.dir.hive}"/>
<property name="is-offline" value="${is-offline}"/>
<filelist dir="." files="ant/build.xml,shims/build.xml,common/build.xml,serde/build.xml,metastore/build.xml,ql/build.xml,cli/build.xml,contrib/build.xml,service/build.xml,jdbc/build.xml,hwi/build.xml,hbase-handler/build.xml,ant/build.xml"/>
</subant>
</sequential>
</macrodef>
<macrodef name="iterate">
<attribute name="target"/>
<sequential>
<subant target="@{target}">
<property name="build.dir.hive" location="${build.dir.hive}"/>
<property name="is-offline" value="${is-offline}"/>
<filelist dir="." files="shims/build.xml,common/build.xml,serde/build.xml,metastore/build.xml,ql/build.xml,cli/build.xml,contrib/build.xml,service/build.xml,jdbc/build.xml,hwi/build.xml,hbase-handler/build.xml"/>
</subant>
</sequential>
</macrodef>
<!-- the normal classpath -->
<path id="common-classpath">
<pathelement location="${hadoop.oldstyle-name.jar}"/>
<pathelement location="${hadoop.newstyle-name.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"/>
<fileset dir="${build.dir.hive}/ivy/lib/default" includes="*.jar"
excludes="*hadoop*.jar" erroronmissingdir="false"/>
</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>
<target name="init">
<iterate-all target="init"/>
</target>
<target name="test-init">
<iterate-all target="test-init"/>
</target>
<target name="compile-cpp"
depends="init"
description="Build CPP artifacts" >
<fail unless="thrift.home">
You must set thrift.home to the absolute path of your
local Thrift installation.
</fail>
<iterate-cpp target="compile-cpp"/>
</target>
<target name="compile-cpp-clean"
description="Clean CPP artifacts">
<iterate-cpp target="clean"/>
</target>
<target name="compile" depends="compile-cpp">
<iterate target="compile"/>
</target>
<target name="thriftif">
<iterate-thriftif target="thriftif"/>
</target>
<target name="jar"
description="Build JAR artifacts">
<iterate target="jar"/>
</target>
<target name="jar-test" depends="jar"
description="Build Java test artifacts">
<iterate-test target="compile-test"/>
</target>
<target name="test" depends="clean-test,jar-test" description="Run tests">
<antcall target="test-shims">
<param name="hadoop.version.ant-internal" value="${hadoop.security.version}" />
</antcall>
<for keepgoing="${test.continue.on.failure}" param="file">
<path>
<fileset dir="." includes="*/build.xml" excludes="ant/*,odbc/*,shims/*"/>
</path>
<sequential>
<ant antfile="@{file}" target="test" inheritAll="false" inheritRefs="true">
<property name="build.dir.hive" location="${build.dir.hive}"/>
<property name="is-offline" value="${is-offline}"/>
</ant>
</sequential>
</for>
</target>
<!-- create an html report from junit output files -->
<target name="testreport"
description="Generate JUnit HTML test report">
<mkdir dir="${test.build.dir}"/>
<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"
description="Clean test results">
<iterate target="clean-test"/>
<delete dir="${build.dir.hive}/test"/>
<delete dir="${hive.root}/ql/TempStatsStore"/>
</target>
<target name="clean"
description="Clean build artifacts">
<iterate-all target="clean"/>
<iterate-cpp target="clean"/>
<delete dir="${target.dir}"/>
<antcall target="clean-online"/>
<antcall target="clean-offline"/>
</target>
<target name="clean-online" unless="offline">
<delete dir="${build.dir.hive}"/>
</target>
<target name="clean-offline" if="offline">
<!-- preserve the downloaded ivy .jar -->
<delete quiet="true" includeemptydirs="true">
<fileset dir="${build.dir.hive}" excludes="ivy/**/ivy*.jar"/>
</delete>
</target>
<!-- ====================================================== -->
<!-- Generate some of the test data. -->
<!-- ====================================================== -->
<target name="gen-testdata"
depends="jar"
description="Generate test data">
<subant target="gen-testdata">
<property name="build.dir.hive" location="${build.dir.hive}"/>
<fileset dir="." includes="serde/build.xml"/>
</subant>
</target>
<target name="package-cpp"
depends="package,compile-cpp"
description="Deploy CPP artifacts">
<mkdir dir="${target.dir}/include"/>
<copy todir="${target.dir}/include" preservelastmodified="true" flatten="true">
<fileset file="${build.dir.hive}/odbc/include/*"/>
</copy>
<copy todir="${target.lib.dir}" preservelastmodified="true" flatten="true">
<fileset file="${build.dir.hive}/odbc/lib/*" excludes="*.so"/>
</copy>
<symlink link="${target.lib.dir}/libhiveclient.so" resource="libhiveclient.so.1.0.0"/>
</target>
<target name="package"
depends="jar"
description="Deploy JAR artifacts">
<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.scripts.dir}/metastore/upgrade"/>
<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.scripts.dir}/metastore/upgrade">
<fileset dir="${hive.root}/metastore/scripts/upgrade" excludes="${vcs.excludes}"/>
</copy>
<copy todir="${target.bin.dir}/ext">
<fileset dir="${hive.root}/bin/ext" excludes="${vcs.excludes}"/>
</copy>
<copy file="${hive.root}/bin/hive-config.sh" todir="${target.bin.dir}"/>
<copy file="${basedir}/conf/hive-default.xml" todir="${target.conf.dir}">
<filterset>
<filter token="VERSION" value="${version}"/>
</filterset>
</copy>
<copy todir="${target.conf.dir}">
<fileset dir="${basedir}/conf">
<include name="*.properties"/>
<include name="*.template"/>
</fileset>
</copy>
<!-- Create php thrift package -->
<copy todir="${target.lib.dir}/php">
<fileset dir="${hive.root}/service/lib/php" excludes="${vcs.excludes}"/>
</copy>
<copy todir="${target.lib.dir}/php/packages/serde">
<fileset dir="${hive.root}/serde/src/gen/thrift/gen-php" excludes="${vcs.excludes}"/>
</copy>
<copy todir="${target.lib.dir}/php/packages/hive_metastore">
<fileset dir="${hive.root}/metastore/src/gen/thrift/gen-php" excludes="${vcs.excludes}"/>
</copy>
<copy todir="${target.lib.dir}/php/packages/hive_service">
<fileset dir="${hive.root}/service/src/gen/thrift/gen-php" excludes="${vcs.excludes}"/>
</copy>
<copy todir="${target.lib.dir}/php/packages/queryplan">
<fileset dir="${hive.root}/ql/src/gen/thrift/gen-php" excludes="${vcs.excludes}"/>
</copy>
<!-- Create the python thrift package -->
<copy todir="${target.lib.dir}/py">
<fileset dir="${hive.root}/service/lib/py" excludes="${vcs.excludes}"/>
</copy>
<copy todir="${target.lib.dir}/py/hive_serde">
<fileset dir="${hive.root}/serde/src/gen/thrift/gen-py/org_apache_hadoop_hive_serde" excludes="${vcs.excludes}"/>
</copy>
<copy todir="${target.lib.dir}/py/hive_metastore">
<fileset dir="${hive.root}/metastore/src/gen/thrift/gen-py/hive_metastore" excludes="${vcs.excludes}"/>
</copy>
<copy todir="${target.lib.dir}/py/hive_service">
<fileset dir="${hive.root}/service/src/gen/thrift/gen-py/hive_service" excludes="${vcs.excludes}"/>
</copy>
<copy todir="${target.lib.dir}/py/queryplan">
<fileset dir="${hive.root}/ql/src/gen/thrift/gen-py/queryplan" excludes="${vcs.excludes}"/>
</copy>
<!-- copy jar files -->
<copy todir="${target.lib.dir}" preservelastmodified="true" flatten="true">
<fileset dir="${hive.root}" includes="*/*.jar, */*/*.jar" excludes="**/antlr-2*,**/antlr-3*,**/TestSerDe.jar"/>
<fileset file="${build.dir.hive}/cli/hive-cli-${version}.jar"/>
<fileset file="${build.dir.hive}/common/hive-common-${version}.jar"/>
<fileset file="${build.dir.hive}/ql/hive-exec-${version}.jar"/>
<fileset file="${build.dir.hive}/metastore/hive-metastore-${version}.jar"/>
<fileset file="${build.dir.hive}/hwi/hive-hwi-${version}.war"/>
<fileset file="${build.dir.hive}/contrib/hive-contrib-${version}.jar"/>
<fileset file="${build.dir.hive}/contrib/hive-hbase_handler-${version}.jar"/>
<fileset dir="${build.dir.hive}/ivy/lib/default">
<include name="*.jar"/>
<exclude name="*.tar.gz"/>
</fileset>
</copy>
<copy todir="${target.example.dir}/files" preservelastmodified="true" flatten="true">
<fileset dir="${test.data.dir}/files" includes="*.*" excludes="${vcs.excludes}"/>
</copy>
<copy file="${basedir}/README.txt" todir="${target.dir}">
<filterset>
<filter token="VERSION" value="${version}"/>
</filterset>
</copy>
<copy file="${basedir}/NOTICE" todir="${target.dir}"/>
<copy file="${basedir}/LICENSE" todir="${target.dir}"/>
<copy file="${basedir}/RELEASE_NOTES.txt" todir="${target.dir}"/>
<copy todir="${target.example.dir}/queries" preservelastmodified="true" flatten="true">
<fileset dir="${ql.test.query.dir}/positive" includes="*.q" excludes="${vcs.excludes}"/>
</copy>
<chmod perm="ugo+x" type="file" parallel="false">
<fileset dir="${target.bin.dir}"/>
</chmod>
<!-- create symlinks for libthrift.jar and libfb303.jar for backward compatibility -->
<symlink overwrite="true" link="${target.lib.dir}/libthrift.jar" resource="thrift-${thrift.version}.jar"/>
<symlink overwrite="true" link="${target.lib.dir}/libfb303.jar" resource="thrift-fb303-${thrift-fb303.version}.jar"/>
</target>
<!-- ====================================================== -->
<!-- Generate files for eclipse. -->
<!-- ====================================================== -->
<target name="eclipse-files" depends="init"
description="Generate files for Eclipse">
<condition property="hadoop.version.ant-internal" value="0.20">
<not>
<isset property="hadoop.version.ant-internal"/>
</not>
</condition>
<echo message="Using hadoop version ${hadoop.version.ant-internal}"/>
<taskdef name="getversionpref" classname="org.apache.hadoop.hive.ant.GetVersionPref"
classpath="${build.dir.hive}/anttasks/hive-anttasks-${version}.jar"/>
<getversionpref property="hadoop.version.ant-internal.prefix" input="${hadoop.version.ant-internal}"/>
<condition property="jetty.jar" value="jetty-6.1.14.jar" else="jetty-5.1.4.jar">
<matches string="${hadoop.version.ant-internal}" pattern="^0\.20\..*" />
</condition>
<condition property="jetty.util.jar" value="jetty-util-6.1.14.jar" else="jetty-ext/jsp-api.jar">
<!-- hadoop 0.19 and earlier does not have jetty-util.jar, so we just load another jar -->
<matches string="${hadoop.version.ant-internal}" pattern="^0\.20\..*" />
</condition>
<condition property="servlet-api.jar" value="servlet-api-2.5-6.1.14.jar" else="servlet-api.jar">
<matches string="${hadoop.version.ant-internal}" pattern="^0\.20\..*" />
</condition>
<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="${vcs.excludes}"/>
</fileset>
<filterset>
<filtersfile file="${hive.root}/ivy/libraries.properties"/>
<filter token="PROJECT" value="${eclipse.project}"/>
<filter token="HADOOPVER" value="${hadoop.version.ant-internal}"/>
<filter token="HADOOPVERPREF" value="${hadoop.version.ant-internal.prefix}"/>
<filter token="JETTYJAR" value="${jetty.jar}"/>
<filter token="JETTYUTILJAR" value="${jetty.util.jar}"/>
<filter token="SERVLETAPIJAR" value="${servlet-api.jar}"/>
<filter token="HIVE_VERSION" value="${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" description="Generate documentation">
<antcall target="docs-anakia"/>
</target>
<target name="javadoc" depends="package" description="Generate Javadoc">
<mkdir dir="${build.javadoc}"/>
<javadoc
maxmemory="1024m"
packagenames="org.apache.hadoop.hive.*"
destdir="${build.javadoc}"
author="true"
version="true"
use="true"
windowtitle="${Name} ${version} API"
doctitle="${Name} ${version} API"
bottom="Copyright &amp;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/thrift/gen-javabean"/>
<packageset dir="serde/src/java"/>
<packageset dir="serde/src/test"/>
<packageset dir="serde/src/gen/thrift/gen-javabean"/>
<packageset dir="serde/src/gen/protobuf/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/thrift/gen-javabean"/>
<packageset dir="metastore/src/model"/>
<packageset dir="cli/src/java"/>
<packageset dir="ql/src/java"/>
<packageset dir="ql/src/test"/>
<packageset dir="ql/src/gen/thrift/gen-javabean"/>
<packageset dir="${build.dir.hive}/ql/gen/antlr/gen-java"/>
<packageset dir="shims/src/common/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}/${tar.final.name}.tar.gz">
<param.listofitems>
<tarfileset dir="${build.dir.hive}/dist" mode="755" prefix="${tar.final.name}"
excludes="${vcs.excludes}">
<include name="bin/**"/>
</tarfileset>
<tarfileset dir="${build.dir.hive}/dist" mode="755" prefix="${tar.final.name}"
excludes="${vcs.excludes}">
<include name="lib/py/**/*-remote"/>
</tarfileset>
<tarfileset dir="${build.dir.hive}/dist" mode="664" prefix="${tar.final.name}"
excludes="${vcs.excludes}">
<include name="**"/>
<exclude name="bin/**"/>
<exclude name="lib/py/**/*-remote"/>
</tarfileset>
<tarfileset dir="${hive.root}" mode="664" prefix="${tar.final.name}/src"
excludes="${vcs.excludes}">
<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="${tar.final.name}/src"
excludes="${vcs.excludes}">
<exclude name="build/**" />
<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 release 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}"
excludes="${vcs.excludes}">
<include name="bin/**"/>
</tarfileset>
<tarfileset dir="${build.dir.hive}/dist" mode="755" prefix="${bin.final.name}"
excludes="${vcs.excludes}">
<include name="lib/py/**/*-remote"/>
</tarfileset>
<tarfileset dir="${build.dir.hive}/dist" mode="664" prefix="${bin.final.name}"
excludes="${vcs.excludes}">
<include name="**"/>
<exclude name="bin/**"/>
<exclude name="docs/**"/>
<exclude name="lib/py/**/*-remote"/>
</tarfileset>
</param.listofitems>
</macro_tar>
</target>
<!-- ================================================================== -->
<!-- Checkstyle -->
<!-- ================================================================== -->
<import file="${hive.root}/build-common.xml"/>
<target name="checkstyle" depends="ivy-retrieve-checkstyle,check-for-checkstyle"
if="checkstyle.present"
description="Run Checkstyle on source files">
<taskdef resource="checkstyletask.properties">
<classpath refid="checkstyle-classpath"/>
</taskdef>
<mkdir dir="${checkstyle.build.dir}"/>
<checkstyle config="${checkstyle.conf.dir}/checkstyle.xml"
failOnViolation="false">
<fileset dir="${hive.root}">
<exclude name="build/**"/>
<exclude name="ant/**"/>
<include name="**/*.java"/>
</fileset>
<formatter type="plain" toFile="${checkstyle.build.dir}/checkstyle-errors.txt"/>
<formatter type="xml" toFile="${checkstyle.build.dir}/checkstyle-errors.xml"/>
</checkstyle>
<xslt style="${checkstyle.conf.dir}/checkstyle-noframes-sorted.xsl"
in="${checkstyle.build.dir}/checkstyle-errors.xml"
out="${checkstyle.build.dir}/checkstyle-errors.html"/>
</target>
<target name="check-for-checkstyle">
<available property="checkstyle.present" resource="checkstyletask.properties">
<classpath refid="checkstyle-classpath"/>
</available>
</target>
<target name="docs-anakia" depends="ivy-docs">
<echo message="Building xdocs with anakia"/>
<mkdir dir="${build.dir.hive}/docs"/>
<taskdef name="anakia" classname="org.apache.velocity.anakia.AnakiaTask">
<classpath refid="common-classpath"/>
<classpath refid="docs-classpath"/>
</taskdef>
<anakia basedir="${anakia.docs.src}" destdir="${anakia.docs.dest}"
extension=".html" style="./docs/stylesheets/site.vsl"
projectFile="../stylesheets/project.xml"
excludes="**/stylesheets/**"
includes="**/*.xml"
lastModifiedCheck="false"
velocityPropertiesFile="${docs.src}/velocity.properties">
</anakia>
<copy todir="${anakia.docs.dest}/images" filtering="no">
<fileset dir="${docs.src}/images">
<include name="**/*.gif"/>
<include name="**/*.jpeg"/>
<include name="**/*.jpg"/>
<include name="**/*.png"/>
</fileset>
</copy>
<copy file="${docs.src}/site.css" tofile="${anakia.docs.dest}/site.css" />
</target>
<!-- Prepare for maven deploy i.e. jars, poms, and licence -->
<target name="maven-build" depends="jar" description="Build Maven artifacts">
<!-- create jars, poms licences directory -->
<mkdir dir="${build.dir.hive}/maven/jars" />
<mkdir dir="${build.dir.hive}/maven/poms" />
<mkdir dir="${build.dir.hive}/maven/licences" />
<!-- call make pom on all projects that have ivy.xml -->
<iterate-all target="make-pom" />
<!-- copy the jars -->
<copy file="${build.dir.hive}/anttasks/hive-anttasks-${version}.jar"
todir="${build.dir.hive}/maven/jars/" />
<copy file="${build.dir.hive}/cli/hive-cli-${version}.jar"
todir="${build.dir.hive}/maven/jars/" />
<copy file="${build.dir.hive}/common/hive-common-${version}.jar"
todir="${build.dir.hive}/maven/jars/" />
<copy file="${build.dir.hive}/contrib/hive-contrib-${version}.jar"
todir="${build.dir.hive}/maven/jars/" />
<copy file="${build.dir.hive}/hbase-handler/hive-hbase-handler-${version}.jar"
todir="${build.dir.hive}/maven/jars/" />
<copy file="${build.dir.hive}/hwi/hive-hwi-${version}.jar"
todir="${build.dir.hive}/maven/jars/" />
<copy file="${build.dir.hive}/jdbc/hive-jdbc-${version}.jar"
todir="${build.dir.hive}/maven/jars/" />
<copy file="${build.dir.hive}/metastore/hive-metastore-${version}.jar"
todir="${build.dir.hive}/maven/jars/" />
<copy file="${build.dir.hive}/ql/hive-exec-${version}.jar"
todir="${build.dir.hive}/maven/jars/" />
<copy file="${build.dir.hive}/serde/hive-serde-${version}.jar"
todir="${build.dir.hive}/maven/jars/" />
<copy file="${build.dir.hive}/service/hive-service-${version}.jar"
todir="${build.dir.hive}/maven/jars/" />
<copy file="${build.dir.hive}/shims/hive-shims-${version}.jar"
todir="${build.dir.hive}/maven/jars/" />
<!-- copy over maven pom files created using the make-pom target and rename to maven convention -->
<copy file="${build.dir.hive}/anttasks/pom.xml"
tofile="${build.dir.hive}/maven/poms/hive-anttasks-${version}.pom" />
<copy file="${build.dir.hive}/cli/pom.xml"
tofile="${build.dir.hive}/maven/poms/hive-cli-${version}.pom" />
<copy file="${build.dir.hive}/common/pom.xml"
tofile="${build.dir.hive}/maven/poms/hive-common-${version}.pom" />
<copy file="${build.dir.hive}/contrib/pom.xml"
tofile="${build.dir.hive}/maven/poms/hive-contrib-${version}.pom" />
<copy file="${build.dir.hive}/hbase-handler/pom.xml"
tofile="${build.dir.hive}/maven/poms/hive-hbase-handler-${version}.pom" />
<copy file="${build.dir.hive}/hwi/pom.xml"
tofile="${build.dir.hive}/maven/poms/hive-hwi-${version}.pom" />
<copy file="${build.dir.hive}/jdbc/pom.xml"
tofile="${build.dir.hive}/maven/poms/hive-jdbc-${version}.pom" />
<copy file="${build.dir.hive}/metastore/pom.xml"
tofile="${build.dir.hive}/maven/poms/hive-metastore-${version}.pom" />
<copy file="${build.dir.hive}/ql/pom.xml"
tofile="${build.dir.hive}/maven/poms/hive-exec-${version}.pom" />
<copy file="${build.dir.hive}/serde/pom.xml"
tofile="${build.dir.hive}/maven/poms/hive-serde-${version}.pom" />
<copy file="${build.dir.hive}/service/pom.xml"
tofile="${build.dir.hive}/maven/poms/hive-service-${version}.pom" />
<copy file="${build.dir.hive}/shims/pom.xml"
tofile="${build.dir.hive}/maven/poms/hive-shims-${version}.pom" />
<!-- copy over licence -->
<copy file="${hive.root}/LICENSE" todir="${build.dir.hive}/maven/licences/" />
<!-- checksum files -->
<checksum forceOverwrite="yes" algorithm="MD5" fileext=".md5">
<fileset dir="${build.dir.hive}/maven/jars" excludes="**/*.sha1,**/*.md5" />
<fileset dir="${build.dir.hive}/maven/poms" excludes="**/*.sha1,**/*.md5" />
<fileset dir="${build.dir.hive}/maven/licences" excludes="**/*.sha1,**/*.md5" />
</checksum>
<checksum forceOverwrite="yes" algorithm="SHA" fileext=".sha1">
<fileset dir="${build.dir.hive}/maven/jars" excludes="**/*.sha1,**/*.md5" />
<fileset dir="${build.dir.hive}/maven/poms" excludes="**/*.sha1,**/*.md5" />
<fileset dir="${build.dir.hive}/maven/licences" excludes="**/*.sha1,**/*.md5" />
</checksum>
<echo>
To deploy using maven:
1) Copy the following to the ~/.m2/settings.xml file please
see:http://maven.apache.org/developers/committer-settings.html
&lt;servers&gt;
&lt;server&gt;
&lt;id&gt;apache.${repo}.https&lt;/id&gt;
&lt;username&gt;[username]&lt;/username&gt;
&lt;password&gt;[password]&lt;/password&gt;
&lt;/server&gt;
&lt;/servers&gt;
2)Read
http://www.apache.org/dev/repository-faq.html
http://www.apache.org/dev/publishing-maven-artifacts.html
3)Run the maven-publish target to publish
the artifact to the ASF Nexus
staging process
</echo>
</target>
<target name="maven-publish" description="Publish Maven artifacts">
<antcall target="maven-publish-artifact">
<param name="hive.project" value="anttasks" />
</antcall>
<antcall target="maven-publish-artifact">
<param name="hive.project" value="cli" />
</antcall>
<antcall target="maven-publish-artifact">
<param name="hive.project" value="common" />
</antcall>
<antcall target="maven-publish-artifact">
<param name="hive.project" value="contrib" />
</antcall>
<antcall target="maven-publish-artifact">
<param name="hive.project" value="exec" />
</antcall>
<antcall target="maven-publish-artifact">
<param name="hive.project" value="hbase-handler" />
</antcall>
<antcall target="maven-publish-artifact">
<param name="hive.project" value="hwi" />
</antcall>
<antcall target="maven-publish-artifact">
<param name="hive.project" value="jdbc" />
</antcall>
<antcall target="maven-publish-artifact">
<param name="hive.project" value="metastore" />
</antcall>
<antcall target="maven-publish-artifact">
<param name="hive.project" value="serde" />
</antcall>
<antcall target="maven-publish-artifact">
<param name="hive.project" value="service" />
</antcall>
<antcall target="maven-publish-artifact">
<param name="hive.project" value="shims" />
</antcall>
</target>
</project>