| <?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 xmlns:ivy="antlib:org.apache.ivy.ant" name="ql" default="jar"> |
| |
| <property name="ql.lib.dir" value="${basedir}/lib"/> |
| <property name="src.dir" location="${basedir}/src/java"/> |
| <property name="protobuf.src.dir" location="${basedir}/src/protobuf"/> |
| <property name="protobuf.build.dir" |
| location="${basedir}/src/gen/protobuf/gen-java"/> |
| <property name="ql.test.query.dir" location="${basedir}/src/test/queries"/> |
| <property name="ql.test.template.dir" location="${basedir}/src/test/templates"/> |
| <property name="ql.test.results.dir" location="${basedir}/src/test/results"/> |
| |
| <property name="ql.test.query.clientpositive.dir" location="${ql.test.query.dir}/clientpositive"/> |
| <property name="ql.test.query.beelinepositive.dir" location="${ql.test.query.dir}/beelinepositive"/> |
| <property name="ql.test.results.clientpositive.dir" location="${ql.test.results.dir}/clientpositive"/> |
| <property name="ql.test.results.beelinepositive.dir" location="${ql.test.results.dir}/beelinepositive"/> |
| |
| <import file="../build-common.xml"/> |
| <property name="ql.test.clientpositive.exclude" value="${minimr.query.files}"/> |
| |
| <property name="ql.test.beelinepositive.exclude" value="${test.beelinepositive.exclude}"/> |
| |
| <target name="gen-test" depends="test-conditions, test-init" > |
| <echo message="${ant.project.name}"/> |
| <taskdef name="qtestgen" classname="org.apache.hadoop.hive.ant.QTestGenTask" |
| classpath="${build.dir.hive}/anttasks/hive-anttasks-${version}.jar:${build.ivy.lib.dir}/default/velocity-${velocity.version}.jar:${build.ivy.lib.dir}/default/commons-collections-${commons-collections.version}.jar:${build.ivy.lib.dir}/default/commons-lang-${commons-lang.version}.jar:${build.ivy.lib.dir}/default/derby-${derby.version}.jar"/> |
| |
| <qtestgen hiveRootDirectory="${hive.root}" |
| outputDirectory="${test.build.src}/org/apache/hadoop/hive/ql/parse" |
| templatePath="${ql.test.template.dir}" template="TestParse.vm" |
| queryDirectory="${ql.test.query.dir}/positive" |
| queryFile="${qfile}" |
| queryFileRegex="${qfile_regex}" |
| runDisabled="${run_disabled}" |
| resultsDirectory="${ql.test.results.dir}/compiler" className="TestParse" |
| logFile="${test.log.dir}/testparsegen.log" |
| hadoopVersion="${hadoopVersion}" |
| logDirectory="${test.log.dir}/positive"/> |
| |
| <qtestgen hiveRootDirectory="${hive.root}" |
| outputDirectory="${test.build.src}/org/apache/hadoop/hive/ql/parse" |
| templatePath="${ql.test.template.dir}" template="TestParseNegative.vm" |
| queryDirectory="${ql.test.query.dir}/negative" |
| queryFile="${qfile}" |
| queryFileRegex="${qfile_regex}" |
| runDisabled="${run_disabled}" |
| resultsDirectory="${ql.test.results.dir}/compiler/errors" className="TestParseNegative" |
| logFile="${test.log.dir}/testparseneggen.log" |
| hadoopVersion="${hadoopVersion}" |
| logDirectory="${test.log.dir}/negative"/> |
| |
| <qtestgen hiveRootDirectory="${hive.root}" |
| outputDirectory="${test.build.src}/org/apache/hadoop/hive/cli" |
| templatePath="${ql.test.template.dir}" template="TestCliDriver.vm" |
| queryDirectory="${ql.test.query.clientpositive.dir}" |
| queryFile="${qfile}" |
| excludeQueryFile="${ql.test.clientpositive.exclude}" |
| queryFileRegex="${qfile_regex}" |
| clusterMode="${clustermode}" |
| runDisabled="${run_disabled}" |
| resultsDirectory="${ql.test.results.clientpositive.dir}" className="TestCliDriver" |
| logFile="${test.log.dir}/testclidrivergen.log" |
| logDirectory="${test.log.dir}/clientpositive" |
| hadoopVersion="${hadoopVersion}"/> |
| |
| <if> |
| <matches string="${iterate.hive.all}" pattern="beeline"/> |
| <then> |
| <qtestgen hiveRootDirectory="${hive.root}" |
| outputDirectory="${test.build.src}/org/apache/hive/beeline/util" |
| templatePath="${ql.test.template.dir}" template="TestBeeLineDriver.vm" |
| queryDirectory="${ql.test.query.clientpositive.dir}" |
| queryFile="${qfile}" |
| excludeQueryFile="${ql.test.beelinepositive.exclude}" |
| queryFileRegex="${qfile_regex}" |
| clusterMode="${clustermode}" |
| runDisabled="${run_disabled}" |
| resultsDirectory="${ql.test.results.beelinepositive.dir}" className="TestBeeLineDriver" |
| logFile="${test.log.dir}/testbeelinedrivergen.log" |
| logDirectory="${test.log.dir}/beelinepositive" |
| hadoopVersion="${hadoopVersion}" /> |
| </then> |
| </if> |
| |
| <if> |
| <not> |
| <matches string="${hadoop.version.ant-internal}" pattern="^0\.17\..*" /> |
| </not> |
| <then> |
| <qtestgen hiveRootDirectory="${hive.root}" |
| outputDirectory="${test.build.src}/org/apache/hadoop/hive/cli" |
| templatePath="${ql.test.template.dir}" template="TestCliDriver.vm" |
| queryDirectory="${ql.test.query.clientpositive.dir}" |
| queryFile="${qfile}" |
| includeQueryFile="${minimr.query.files}" |
| queryFileRegex="${qfile_regex}" |
| clusterMode="miniMR" |
| runDisabled="${run_disabled}" |
| resultsDirectory="${ql.test.results.clientpositive.dir}" className="TestMinimrCliDriver" |
| logFile="${test.log.dir}/testminimrclidrivergen.log" |
| logDirectory="${test.log.dir}/clientpositive" |
| hadoopVersion="${hadoopVersion}" |
| /> |
| |
| <qtestgen hiveRootDirectory="${hive.root}" |
| outputDirectory="${test.build.src}/org/apache/hadoop/hive/cli" |
| templatePath="${ql.test.template.dir}" template="TestNegativeCliDriver.vm" |
| queryDirectory="${ql.test.query.dir}/clientnegative" |
| queryFile="${qfile}" |
| includeQueryFile="${minimr.query.negative.files}" |
| queryFileRegex="${qfile_negative_regex}" |
| clusterMode="miniMR" |
| runDisabled="${run_disabled}" |
| resultsDirectory="${ql.test.results.dir}/clientnegative" className="TestNegativeMinimrCliDriver" |
| logFile="${test.log.dir}/testnegativeminimrclidrivergen.log" |
| logDirectory="${test.log.dir}/clientnegative" |
| hadoopVersion="${hadoopVersion}" |
| /> |
| </then> |
| </if> |
| |
| <qtestgen hiveRootDirectory="${hive.root}" |
| outputDirectory="${test.build.src}/org/apache/hadoop/hive/cli" |
| templatePath="${ql.test.template.dir}" template="TestNegativeCliDriver.vm" |
| queryDirectory="${ql.test.query.dir}/clientnegative" |
| queryFile="${qfile}" |
| queryFileRegex="${qfile_regex}" |
| excludeQueryFile="${minimr.query.negative.files}" |
| runDisabled="${run_disabled}" |
| resultsDirectory="${ql.test.results.dir}/clientnegative" className="TestNegativeCliDriver" |
| logFile="${test.log.dir}/testnegclidrivergen.log" |
| logDirectory="${test.log.dir}/clientnegative" |
| hadoopVersion="${hadoopVersion}"/> |
| |
| </target> |
| |
| <uptodate property="grammarBuild.notRequired"> |
| <srcfiles dir= "${src.dir}/org/apache/hadoop/hive/ql/parse" includes="**/*.g"/> |
| <mapper type="merge" to="${build.dir.hive}/ql/gen/antlr/gen-java/org/apache/hadoop/hive/ql/parse/HiveParser.java"/> |
| </uptodate> |
| |
| <target name="build-grammar" unless="grammarBuild.notRequired"> |
| <echo message="Project: ${ant.project.name}"/> |
| <echo>Building Grammar ${src.dir}/org/apache/hadoop/hive/ql/parse/Hive.g ....</echo> |
| <java classname="org.antlr.Tool" classpathref="classpath" fork="true"> |
| <arg value="-fo" /> |
| <arg value="${build.dir}/gen/antlr/gen-java/org/apache/hadoop/hive/ql/parse" /> |
| <arg value="${src.dir}/org/apache/hadoop/hive/ql/parse/HiveLexer.g" /> |
| <arg value="${src.dir}/org/apache/hadoop/hive/ql/parse/HiveParser.g" /> |
| </java> |
| </target> |
| |
| <target name="protobuf"> |
| <echo message="Project: ${ant.project.name}"/> |
| <echo>Building ORC Protobuf</echo> |
| <mkdir dir="${protobuf.build.dir}"/> |
| <exec executable="protoc" failonerror="true"> |
| <arg value="--java_out=${protobuf.build.dir}"/> |
| <arg value="-I=${protobuf.src.dir}/org/apache/hadoop/hive/ql/io/orc"/> |
| <arg value="${protobuf.src.dir}/org/apache/hadoop/hive/ql/io/orc/orc_proto.proto"/> |
| </exec> |
| </target> |
| |
| <target name="ql-init"> |
| <echo message="Project: ${ant.project.name}"/> |
| <mkdir dir="${build.dir}/gen/antlr/gen-java/org/apache/hadoop/hive/ql/parse"/> |
| </target> |
| |
| <target name="compile" |
| depends="init, ql-init, ivy-retrieve, build-grammar"> |
| <echo message="Project: ${ant.project.name}"/> |
| <javac |
| encoding="${build.encoding}" |
| srcdir="${src.dir}:${basedir}/src/gen/thrift/gen-javabean:${build.dir}/gen/antlr/gen-java:${protobuf.build.dir}:${build.dir}/gen/vector" |
| includes="**/*.java" |
| destdir="${build.classes}" |
| debug="${javac.debug}" |
| deprecation="${javac.deprecation}" |
| includeantruntime="false"> |
| <compilerarg line="${javac.args} ${javac.args.warnings}" /> |
| <classpath refid="classpath"/> |
| </javac> |
| <copy todir="${build.classes}" failonerror="false"> |
| <fileset dir="${src.dir}/conf"/> |
| </copy> |
| </target> |
| |
| <!-- Override jar target to specify main class and compiler stuff --> |
| |
| <target name="jar" depends="make-pom,compile"> |
| <echo message="Project: ${ant.project.name}"/> |
| <unzip src="${build.ivy.lib.dir}/default/libthrift-${libthrift.version}.jar" dest="${build.dir.hive}/thrift/classes"> |
| <patternset> |
| <exclude name="META-INF"/> |
| <exclude name="META-INF/MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| <unzip src="${build.ivy.lib.dir}/default/commons-lang-${commons-lang.version}.jar" dest="${build.dir.hive}/commons-lang/classes"> |
| <patternset> |
| <exclude name="META-INF"/> |
| <exclude name="META-INF/MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| <unzip src="${build.ivy.lib.dir}/default/json-${json.version}.jar" dest="${build.dir.hive}/json/classes"> |
| <patternset> |
| <exclude name="META-INF"/> |
| <exclude name="META-INF/MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| <unzip src="${build.ivy.lib.dir}/default/JavaEWAH-${javaewah.version}.jar" dest="${build.dir.hive}/javaewah/classes"> |
| <patternset> |
| <exclude name="meta-inf"/> |
| <exclude name="meta-inf/manifest.mf"/> |
| </patternset> |
| </unzip> |
| <unzip src="${build.ivy.lib.dir}/default/avro-${avro.version}.jar" dest="${build.dir.hive}/avro/classes"> |
| <patternset> |
| <exclude name="META-INF"/> |
| <exclude name="META-INF/MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| <unzip src="${build.ivy.lib.dir}/default/avro-mapred-${avro.version}.jar" dest="${build.dir.hive}/avro-mapred/classes"> |
| <patternset> |
| <exclude name="META-INF"/> |
| <exclude name="META-INF/MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| <unzip src="${build.ivy.lib.dir}/default/javolution-${javolution.version}.jar" dest="${build.dir.hive}/javolution/classes"> |
| <patternset> |
| <exclude name="META-INF"/> |
| <exclude name="META-INF/MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| <unzip |
| src="${build.ivy.lib.dir}/default/kryo-${kryo.version}.jar" |
| dest="${build.dir.hive}/kryo/classes"> |
| <patternset> |
| <exclude name="META-INF"/> |
| <exclude name="META-INF/MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| |
| <unzip |
| src="${build.ivy.lib.dir}/default/protobuf-java-${protobuf.version}.jar" |
| dest="${build.dir.hive}/protobuf-java/classes"> |
| <patternset> |
| <exclude name="META-INF"/> |
| <exclude name="META-INF/MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| <unzip |
| src="${build.ivy.lib.dir}/default/guava-${guava.version}.jar" |
| dest="${build.dir.hive}/guava/classes"> |
| <patternset> |
| <exclude name="META-INF"/> |
| <exclude name="META-INF/MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| |
| <unzip |
| src="${build.ivy.lib.dir}/default/snappy-${snappy.version}.jar" |
| dest="${build.dir.hive}/snappy/classes"> |
| <patternset> |
| <exclude name="META-INF"/> |
| <exclude name="META-INF/MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| <unzip |
| src="${build.ivy.lib.dir}/default/jackson-core-asl-${jackson.version}.jar" |
| dest="${build.dir.hive}/jackson-core-asl/classes"> |
| <patternset> |
| <exclude name="META-INF"/> |
| <exclude name="META-INF/MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| <unzip |
| src="${build.ivy.lib.dir}/default/jackson-mapper-asl-${jackson.version}.jar" |
| dest="${build.dir.hive}/jackson-mapper-asl/classes"> |
| <patternset> |
| <exclude name="META-INF"/> |
| <exclude name="META-INF/MANIFEST.MF"/> |
| </patternset> |
| </unzip> |
| |
| <!-- jar jarfile="${build.dir}/hive_${name}.jar" basedir="${build.classes}" / --> |
| <jar jarfile="${build.dir}/hive-exec-${version}.jar"> |
| <fileset dir="${build.dir.hive}/common/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/ql/classes" includes="**/*.class,**/*.properties"/> |
| <fileset dir="${build.dir.hive}/serde/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/thrift/classes" includes="**/*.class"/> |
| |
| <fileset dir="${build.dir.hive}/kryo/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/commons-lang/classes" includes="**/StringUtils.class,**/WordUtils.class"/> |
| <fileset dir="${build.dir.hive}/json/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/avro/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/avro-mapred/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/shims/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/javaewah/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/javolution/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/protobuf-java/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/snappy/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/jackson-core-asl/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/jackson-mapper-asl/classes" includes="**/*.class"/> |
| <fileset dir="${build.dir.hive}/guava/classes" includes="**/*.class"/> |
| <manifest> |
| <!-- Not putting these in their own manifest section, since that inserts |
| a new-line, which breaks the reading of the attributes. --> |
| <attribute name="Implementation-Title" value="Hive"/> |
| <attribute name="Implementation-Version" value="${version}"/> |
| <attribute name="Implementation-Vendor" value="Apache"/> |
| </manifest> |
| <metainf dir="${hive.root}" includes="LICENSE,NOTICE"/> |
| </jar> |
| <ivy:publish settingsRef="${ant.project.name}.ivy.settings" |
| resolver="local" pubrevision="${version}" overwrite="true" |
| artifactspattern="${build.dir}/${ivy.publish.pattern}"/> |
| </target> |
| |
| <!-- Override deploy since we are deploying hive_exec and not hive_ql --> |
| <target name="deploy" depends="jar"> |
| <echo message="${ant.project.name}"/> |
| <mkdir dir="${deploy.dir}"/> |
| <copy file="${build.dir}/hive-exec-${version}.jar" |
| todir="${deploy.dir}"/> |
| </target> |
| |
| |
| </project> |