<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed 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="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache</groupId>
    <artifactId>apache</artifactId>
    <version>14</version>
  </parent>
  <groupId>org.apache.hive</groupId>
  <artifactId>hive</artifactId>
  <version>0.13.1</version>
  <packaging>pom</packaging>

  <name>Hive</name>
  <url>http://hive.apache.org</url>
  <prerequisites>
    <maven>2.2.1</maven>
  </prerequisites>

  <modules>
    <module>ant</module>
    <module>beeline</module>
    <module>cli</module>
    <module>common</module>
    <module>contrib</module>
    <module>hbase-handler</module>
    <module>hcatalog</module>
    <module>hwi</module>
    <module>jdbc</module>
    <module>metastore</module>
    <module>odbc</module>
    <module>ql</module>
    <module>serde</module>
    <module>service</module>
    <module>shims</module>
    <module>testutils</module>
    <module>packaging</module>
  </modules>

  <properties>
    <hive.version.shortname>0.13.1</hive.version.shortname>

    <!-- Build Properties -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.useIncrementalCompilation>false</maven.compiler.useIncrementalCompilation>
    <maven.repo.local>${user.home}/.m2/repository</maven.repo.local>
    <hive.path.to.root>.</hive.path.to.root>

    <!-- Test Properties -->
    <test.tmp.dir>${project.build.directory}/tmp</test.tmp.dir>
    <test.warehouse.dir>${project.build.directory}/warehouse</test.warehouse.dir>
    <test.warehouse.scheme>pfile://</test.warehouse.scheme>

    <!-- Plugin and Plugin Dependency Versions -->
    <ant.contrib.version>1.0b3</ant.contrib.version>
    <build.helper.maven.plugin.version>1.8</build.helper.maven.plugin.version>
    <datanucleus.maven.plugin.version>3.3.0-release</datanucleus.maven.plugin.version>
    <maven.antrun.plugin.version>1.7</maven.antrun.plugin.version>
    <maven.assembly.plugin.version>2.3</maven.assembly.plugin.version>
    <maven.compiler.plugin.version>3.1</maven.compiler.plugin.version>
    <maven.enforcer.plugin.version>1.3.1</maven.enforcer.plugin.version>
    <maven.install.plugin.version>2.4</maven.install.plugin.version>
    <maven.jar.plugin.version>2.2</maven.jar.plugin.version>
    <maven.javadoc.plugin.version>2.4</maven.javadoc.plugin.version>
    <maven.shade.plugin.version>2.1</maven.shade.plugin.version>
    <maven.surefire.plugin.version>2.16</maven.surefire.plugin.version>
    <maven.war.plugin.version>2.4</maven.war.plugin.version>

    <!-- Library Dependency Versions -->
    <activemq.version>5.5.0</activemq.version>
    <ant.version>1.9.1</ant.version>
    <antlr.version>3.4</antlr.version>
    <avro.version>1.7.5</avro.version>
    <bonecp.version>0.8.0.RELEASE</bonecp.version>
    <datanucleus-api-jdo.version>3.2.6</datanucleus-api-jdo.version>
    <datanucleus-core.version>3.2.10</datanucleus-core.version>
    <datanucleus-rdbms.version>3.2.9</datanucleus-rdbms.version>
    <commons-cli.version>1.2</commons-cli.version>
    <commons-codec.version>1.4</commons-codec.version>
    <commons-compress.version>1.4.1</commons-compress.version>
    <commons-exec.version>1.1</commons-exec.version>
    <commons-httpclient.version>3.0.1</commons-httpclient.version>
    <commons-io.version>2.4</commons-io.version>
    <commons-lang.version>2.4</commons-lang.version>
    <commons-lang3.version>3.1</commons-lang3.version>
    <commons-logging.version>1.1.3</commons-logging.version>
    <derby.version>10.10.1.1</derby.version>
    <guava.version>11.0.2</guava.version>
    <groovy.version>2.1.6</groovy.version>
    <hadoop-20.version>0.20.2</hadoop-20.version>
    <hadoop-20S.version>1.2.1</hadoop-20S.version>
    <hadoop-23.version>2.3.0</hadoop-23.version>
    <hbase.hadoop1.version>0.96.0-hadoop1</hbase.hadoop1.version>
    <hbase.hadoop2.version>0.96.0-hadoop2</hbase.hadoop2.version>
    <!-- httpcomponents are not always in version sync -->
    <httpcomponents.client.version>4.2.5</httpcomponents.client.version>
    <httpcomponents.core.version>4.2.5</httpcomponents.core.version>
    <jackson.version>1.9.2</jackson.version>
    <javaewah.version>0.3.2</javaewah.version>
    <javolution.version>5.5.1</javolution.version>
    <jdo-api.version>3.0.1</jdo-api.version>
    <!-- TODO figure out how to reconcile jetty versions -->
    <jetty.version>6.1.26</jetty.version>
    <jetty.webhcat.version>7.6.0.v20120127</jetty.webhcat.version>
    <jetty.hive-service.version>7.6.0.v20120127</jetty.hive-service.version>
    <jersey.version>1.14</jersey.version>
    <jline.version>0.9.94</jline.version>
    <jms.version>1.1</jms.version>
    <json.version>20090211</json.version>
    <junit.version>4.10</junit.version>
    <kryo.version>2.22</kryo.version>
    <libfb303.version>0.9.0</libfb303.version>
    <libthrift.version>0.9.0</libthrift.version>
    <log4j.version>1.2.16</log4j.version>
    <mockito-all.version>1.9.5</mockito-all.version>
    <mina.version>2.0.0-M5</mina.version>
    <!--netty is not a direct dependency but due to a change
        in artifact name and given that zookeeper < 3.5
        requires netty < 3.6.0 we force hadoops version
      -->
    <netty.version>3.4.0.Final</netty.version>
    <parquet.version>1.3.2</parquet.version>
    <pig.version>0.12.0</pig.version>
    <protobuf.version>2.5.0</protobuf.version>
    <stax.version>1.0.1</stax.version>
    <slf4j.version>1.7.5</slf4j.version>
    <ST4.version>4.0.4</ST4.version>
    <tez.version>0.4.0-incubating</tez.version>
    <tempus-fugit.version>1.1</tempus-fugit.version>
    <snappy.version>0.2</snappy.version>
    <wadl-resourcedoc-doclet.version>1.4</wadl-resourcedoc-doclet.version>
    <velocity.version>1.5</velocity.version>
    <xerces.version>2.9.1</xerces.version>
    <zookeeper.version>3.4.5</zookeeper.version>
    <jpam.version>1.1</jpam.version>
  </properties>

  <repositories>
    <repository>
      <id>datanucleus</id>
      <name>datanucleus maven repository</name>
      <url>http://www.datanucleus.org/downloads/maven2</url>
      <layout>default</layout>
      <releases>
        <enabled>true</enabled>
        <checksumPolicy>warn</checksumPolicy>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>glassfish-repository</id>
      <url>http://maven.glassfish.org/content/groups/glassfish</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>glassfish-repo-archive</id>
      <url>http://maven.glassfish.org/content/groups/glassfish</url>
      <releases>
        <enabled>false</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
     <repository>
       <id>sonatype-snapshot</id>
       <url>https://oss.sonatype.org/content/repositories/snapshots</url>
       <releases>
         <enabled>false</enabled>
       </releases>
       <snapshots>
         <enabled>false</enabled>
       </snapshots>
     </repository>
  </repositories>

  <!-- Hadoop dependency management is done at the bottom under profiles -->
  <dependencyManagement>
    <dependencies>
      <!-- dependencies are always listed in sorted order by groupId, artifectId -->
      <dependency>
        <groupId>com.esotericsoftware.kryo</groupId>
        <artifactId>kryo</artifactId>
        <version>${kryo.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>${protobuf.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.tempus-fugit</groupId>
        <artifactId>tempus-fugit</artifactId>
        <version>${tempus-fugit.version}</version>
      </dependency>
      <dependency>
        <groupId>com.googlecode.javaewah</groupId>
        <artifactId>JavaEWAH</artifactId>
        <version>${javaewah.version}</version>
      </dependency>
      <dependency>
        <groupId>com.jolbox</groupId>
        <artifactId>bonecp</artifactId>
        <version>${bonecp.version}</version>
      </dependency>
      <dependency>
        <groupId>com.twitter</groupId>
        <artifactId>parquet-hadoop-bundle</artifactId>
        <version>${parquet.version}</version>
      </dependency>
      <dependency>
        <groupId>com.twitter</groupId>
        <artifactId>parquet-column</artifactId>
        <version>${parquet.version}</version>
        <classifier>tests</classifier>
      </dependency>
      <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-core</artifactId>
        <version>${jersey.version}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>${jersey.version}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>${jersey.version}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>wadl-resourcedoc-doclet</artifactId>
        <version>${wadl-resourcedoc-doclet.version}</version>
      </dependency>
      <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-servlet</artifactId>
        <version>${jersey.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-cli</groupId>
        <artifactId>commons-cli</artifactId>
        <version>${commons-cli.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commons-codec.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-httpclient</groupId>
        <artifactId>commons-httpclient</artifactId>
        <version>${commons-httpclient.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons-io.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>${commons-lang.version}</version>
      </dependency>
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>${commons-logging.version}</version>
      </dependency>
      <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty</artifactId>
        <version>${netty.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.jdo</groupId>
        <artifactId>jdo-api</artifactId>
        <version>${jdo-api.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.jms</groupId>
        <artifactId>jms</artifactId>
        <version>${jms.version}</version>
      </dependency>
      <dependency>
        <groupId>javolution</groupId>
        <artifactId>javolution</artifactId>
        <version>${javolution.version}</version>
      </dependency>
      <dependency>
        <groupId>jline</groupId>
        <artifactId>jline</artifactId>
        <version>${jline.version}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr-runtime</artifactId>
        <version>${antlr.version}</version>
      </dependency>
      <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>ST4</artifactId>
        <version>${ST4.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.ant</groupId>
        <artifactId>ant</artifactId>
        <version>${ant.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-compress</artifactId>
        <version>${commons-compress.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-exec</artifactId>
        <version>${commons-exec.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-core</artifactId>
        <version>${activemq.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>kahadb</artifactId>
        <version>${activemq.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.avro</groupId>
        <artifactId>avro</artifactId>
        <version>${avro.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.avro</groupId>
        <artifactId>avro-mapred</artifactId>
        <version>${avro.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.derby</groupId>
        <artifactId>derby</artifactId>
        <version>${derby.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>${httpcomponents.client.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpcore</artifactId>
        <version>${httpcomponents.core.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.velocity</groupId>
        <artifactId>velocity</artifactId>
        <version>${velocity.version}</version>
      </dependency>
      <dependency>
        <groupId>stax</groupId>
        <artifactId>stax-api</artifactId>
        <version>${stax.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.pig</groupId>
        <artifactId>pig</artifactId>
        <version>${pig.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.thrift</groupId>
        <artifactId>libfb303</artifactId>
        <version>${libfb303.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.thrift</groupId>
        <artifactId>libthrift</artifactId>
        <version>${libthrift.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>${zookeeper.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.jboss.netty</groupId>
            <artifactId>netty</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>${groovy.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-jaxrs</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-xc</artifactId>
        <version>${jackson.version}</version>
      </dependency>
      <dependency>
        <groupId>org.eclipse.jetty.aggregate</groupId>
        <artifactId>jetty-all-server</artifactId>
        <version>${jetty.webhcat.version}</version>
      </dependency>
      <dependency>
        <groupId>org.datanucleus</groupId>
        <artifactId>datanucleus-api-jdo</artifactId>
        <version>${datanucleus-api-jdo.version}</version>
      </dependency>
      <dependency>
        <groupId>org.datanucleus</groupId>
        <artifactId>datanucleus-core</artifactId>
        <version>${datanucleus-core.version}</version>
      </dependency>
      <dependency>
        <groupId>org.datanucleus</groupId>
        <artifactId>datanucleus-rdbms</artifactId>
        <version>${datanucleus-rdbms.version}</version>
      </dependency>
      <dependency>
        <groupId>org.iq80.snappy</groupId>
        <artifactId>snappy</artifactId>
        <version>${snappy.version}</version>
      </dependency>
      <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>${json.version}</version>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>${mockito-all.version}</version>
      </dependency>
      <dependency>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty</artifactId>
        <version>${jetty.version}</version>
      </dependency>
      <dependency>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-util</artifactId>
        <version>${jetty.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>xerces</groupId>
        <artifactId>xercesImpl</artifactId>
        <version>${xerces.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <dependencies>
    <!-- dependencies are always listed in sorted order by groupId, artifectId -->
    <!-- global dependencies -->
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement>
      <plugins>
        <!-- plugins are always listed in sorted order by groupId, artifectId -->
        <plugin>
          <groupId>org.antlr</groupId>
          <artifactId>antlr3-maven-plugin</artifactId>
          <version>${antlr.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>${maven.compiler.plugin.version}</version>
          <configuration>
            <source>1.6</source>
            <target>1.6</target>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-antrun-plugin</artifactId>
          <version>${maven.antrun.plugin.version}</version>
          <dependencies>
            <dependency>
              <groupId>ant-contrib</groupId>
              <artifactId>ant-contrib</artifactId>
              <version>${ant.contrib.version}</version>
              <exclusions>
                <exclusion>
                  <groupId>ant</groupId>
                  <artifactId>ant</artifactId>
                </exclusion>
              </exclusions>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>${maven.assembly.plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>${maven.enforcer.plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>${maven.install.plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>${maven.shade.plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${maven.surefire.plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>${maven.jar.plugin.version}</version>
          <configuration>
            <archive>
              <manifest>
                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
              </manifest>
            </archive>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-war-plugin</artifactId>
          <version>${maven.war.plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>${build.helper.maven.plugin.version}</version>
        </plugin>
        <plugin>
          <groupId>org.datanucleus</groupId>
          <artifactId>datanucleus-maven-plugin</artifactId>
          <version>${datanucleus.maven.plugin.version}</version>
          <dependencies>
            <dependency>
              <groupId>org.datanucleus</groupId>
              <artifactId>datanucleus-core</artifactId>
              <version>${datanucleus-core.version}</version>
            </dependency>
          </dependencies>
        </plugin>
      </plugins>
    </pluginManagement>

    <plugins>
      <!-- plugins are always listed in sorted order by groupId, artifectId -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <id>define-classpath</id>
            <phase>process-resources</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <exportAntProperties>true</exportAntProperties>
              <target>
                <property name="maven.test.classpath" refid="maven.test.classpath"/>
              </target>
            </configuration>
          </execution>
          <execution>
            <id>setup-test-dirs</id>
            <phase>process-test-resources</phase>
            <goals>
              <goal>run</goal>
            </goals>
            <configuration>
              <target>
                <delete dir="${test.tmp.dir}" />
                <delete dir="${test.warehouse.dir}" />
                <mkdir dir="${test.tmp.dir}" />
                <mkdir dir="${test.warehouse.dir}" />
                <mkdir dir="${test.tmp.dir}/conf" />
                <!-- copies hive-site.xml so it can be modified -->
                <copy todir="${test.tmp.dir}/conf/">
                  <fileset dir="${basedir}/${hive.path.to.root}/data/conf/"/>
                </copy>
              </target>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
        <version>2.5</version>
        <configuration>
          <filesets>
            <fileset>
              <directory>./</directory>
              <includes>
                <include>datanucleus.log</include>
                <include>derby.log</include>
              </includes>
              <followSymlinks>false</followSymlinks>
            </fileset>
            <fileset>
              <directory>build</directory>
              <followSymlinks>false</followSymlinks>
            </fileset>
          </filesets>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/TestSerDe.java</exclude>
            <exclude>**/TestHiveMetaStore.java</exclude>
            <exclude>**/ql/exec/vector/util/*.java</exclude>
            <exclude>**/ql/exec/vector/udf/legacy/*.java</exclude>
            <exclude>**/ql/exec/vector/udf/generic/*.java</exclude>
            <exclude>**/TestHiveServer2Concurrency.java</exclude>
            <exclude>**/TestHiveMetaStore.java</exclude>
          </excludes>
	  <includes>
		  <include>**/${testPackage}/*.java</include>
	  </includes>
          <redirectTestOutputToFile>true</redirectTestOutputToFile>
          <reuseForks>false</reuseForks>
          <failIfNoTests>false</failIfNoTests>
          <argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
          <additionalClasspathElements>
            <additionalClasspathElement>${test.tmp.dir}/conf</additionalClasspathElement>
            <additionalClasspathElement>${basedir}/${hive.path.to.root}/conf</additionalClasspathElement>
          </additionalClasspathElements>
          <environmentVariables>
            <TZ>US/Pacific</TZ>
            <LANG>en_US.UTF-8</LANG>
            <HADOOP_CLASSPATH>${test.tmp.dir}/conf:${basedir}/${hive.path.to.root}/conf</HADOOP_CLASSPATH>
            <HIVE_HADOOP_TEST_CLASSPATH>${maven.test.classpath}</HIVE_HADOOP_TEST_CLASSPATH>
          </environmentVariables>
          <systemPropertyVariables>
            <build.dir>${project.build.directory}</build.dir>
            <!-- required by zk test ClientBase -->
            <build.test.dir>${test.tmp.dir}</build.test.dir>
            <!-- required by a few tests to find the derby jar -->
            <derby.version>${derby.version}</derby.version>
            <derby.stream.error.file>${test.tmp.dir}/derby.log</derby.stream.error.file>
            <hadoop.bin.path>${basedir}/${hive.path.to.root}/testutils/hadoop</hadoop.bin.path>
            <!-- required by Hadoop's JobHistory -->
            <hadoop.log.dir>${test.tmp.dir}</hadoop.log.dir>
            <hive.root>${basedir}/${hive.path.to.root}/</hive.root>
            <hive.version>${project.version}</hive.version>
            <!-- required for hive-exec jar path and tests which reference a jar -->
            <maven.local.repository>${maven.repo.local}</maven.local.repository>
            <mapred.job.tracker>local</mapred.job.tracker>
            <log4j.configuration>file://${test.tmp.dir}/conf/hive-log4j.properties</log4j.configuration>
            <log4j.debug>true</log4j.debug>
            <!-- don't diry up /tmp -->
            <java.io.tmpdir>${test.tmp.dir}</java.io.tmpdir>
            <!-- Hadoop's minidfs class uses this -->
            <test.build.data>${test.tmp.dir}</test.build.data>
            <!-- required by QTestUtil -->
            <test.data.files>${basedir}/${hive.path.to.root}/data/files</test.data.files>
            <test.data.dir>${basedir}/${hive.path.to.root}/data/files</test.data.dir>
            <test.tmp.dir>${test.tmp.dir}</test.tmp.dir>
            <test.dfs.mkdir>${test.dfs.mkdir}</test.dfs.mkdir>
            <test.output.overwrite>${test.output.overwrite}</test.output.overwrite>
            <test.warehouse.dir>${test.warehouse.scheme}${test.warehouse.dir}</test.warehouse.dir>
            <!-- EnforceReadOnlyTables hook and QTestUtil -->
            <test.src.tables>src,src1,srcbucket,srcbucket2,src_json,src_thrift,src_sequencefile,srcpart,alltypesorc</test.src.tables>
          </systemPropertyVariables>
        </configuration>
      </plugin>
      <plugin>
	<groupId>org.apache.rat</groupId>
	<artifactId>apache-rat-plugin</artifactId>
	<version>0.10</version>
	<configuration>
	  <excludes>
	    <exclude>data/**</exclude>
	    <exclude>conf/**</exclude>
	    <exclude>checkstyle/**</exclude>
	    <exclude>bin/**</exclude>
	    <exclude>itests/**</exclude>
	    <exclude>docs/**</exclude>
	    <exclude>**/*.txt</exclude>
	    <exclude>**/*.log</exclude>
	    <exclude>**/*.arcconfig</exclude>
	    <exclude>**/package-info.java</exclude>
	    <exclude>**/*.properties</exclude>
	    <exclude>**/*.q</exclude>
	    <exclude>**/*.q.out</exclude>
	    <exclude>**/*.xml</exclude>
	    <exclude>**/gen/**</exclude>
	    <exclude>**/scripts/**</exclude>
	    <exclude>**/resources/**</exclude>
	    <exclude>**/*.rc</exclude>
	    <exclude>**/*.rcfile</exclude>
	    <exclude>**/*.qv</exclude>
	    <exclude>**/*.out</exclude>
	    <exclude>**/RecordTestObj.java</exclude>
	    <exclude>**/*.m</exclude>
	    <exclude>**/gen-java/**</exclude>
	    <exclude>**/testdata/**</exclude>
	    <exclude>**/ptest2/*.md</exclude>
	  </excludes>
	</configuration>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>thriftif</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
              <execution>
                <id>generate-thrift-sources</id>
                <phase>generate-sources</phase>
                <configuration>
                  <target>
                    <taskdef name="for" classname="net.sf.antcontrib.logic.ForTask"
                      classpathref="maven.plugin.classpath" />
                    <property name="thrift.args" value="-I ${thrift.home} --gen java:beans,hashcode --gen cpp --gen php --gen py --gen rb"/>
                    <property name="thrift.gen.dir" value="${basedir}/src/gen/thrift"/>
                    <delete dir="${thrift.gen.dir}"/>
                    <mkdir dir="${thrift.gen.dir}"/>
                    <for param="thrift.file">
                      <path>
                        <fileset dir="." includes="if/*.thrift,if/test/*.thrift" />
                      </path>
                      <sequential>
                        <echo message="Generating Thrift code for @{thrift.file}"/>
                        <exec executable="${thrift.home}/bin/thrift"  failonerror="true" dir=".">
                          <arg line="${thrift.args} -I ${basedir}/include -I ${basedir}/.. -o ${thrift.gen.dir} @{thrift.file} " />
                        </exec>
                      </sequential>
                    </for>
                  </target>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <executions>
              <execution>
                <id>enforce-property</id>
                <goals>
                  <goal>enforce</goal>
                </goals>
                <configuration>
                  <rules>
                    <requireProperty>
                      <property>thrift.home</property>
                    </requireProperty>
                  </rules>
                  <fail>true</fail>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>sources</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-sources</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>

    <profile>
      <id>javadoc</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <!-- hadoop profiles in the root pom are only used for dependency management -->
    <profile>
      <id>hadoop-1</id>
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-core</artifactId>
            <version>${hadoop-20S.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-test</artifactId>
            <version>${hadoop-20S.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-tools</artifactId>
            <version>${hadoop-20S.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-common</artifactId>
            <version>${hbase.hadoop1.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-hadoop-compat</artifactId>
            <version>${hbase.hadoop1.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-hadoop1-compat</artifactId>
            <version>${hbase.hadoop1.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>${hbase.hadoop1.version}</version>
          </dependency>
        </dependencies>
      </dependencyManagement>
    </profile>
    <profile>
      <id>hadoop-2</id>
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop-23.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>${hadoop-23.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-jobclient</artifactId>
            <version>${hadoop-23.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-core</artifactId>
            <version>${hadoop-23.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-common</artifactId>
            <version>${hbase.hadoop2.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-hadoop-compat</artifactId>
            <version>${hbase.hadoop2.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-hadoop2-compat</artifactId>
            <version>${hbase.hadoop2.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>${hbase.hadoop2.version}</version>
          </dependency>
          <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-minicluster</artifactId>
            <version>${hadoop-23.version}</version>
          </dependency>
        </dependencies>
      </dependencyManagement>
    </profile>
  </profiles>
</project>
