<?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">

    <parent>
        <!--disconnected from hive root pom since this module needs 2.x jars-->
        <groupId>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>18</version>
        <relativePath></relativePath>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <!--this module is added to parent pom so that it builds and releases with the reset of Hive-->
    <groupId>org.apache.hive</groupId>
    <artifactId>hive-upgrade-acid</artifactId>
    <version>4.0.0-SNAPSHOT</version>
    <name>Hive Upgrade Acid</name>
    <packaging>pom</packaging>


    <properties>
        <!-- Build properties -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.useIncrementalCompilation>false</maven.compiler.useIncrementalCompilation>
        <maven.repo.local>${settings.localRepository}</maven.repo.local>
        <maven.assembly.plugin.version>2.3</maven.assembly.plugin.version>
        <maven.exec.plugin.version>1.6.0</maven.exec.plugin.version>
        <hive.path.to.root>..</hive.path.to.root>
        <!-- Plugin versions -->
        <ant.contrib.version>1.0b3</ant.contrib.version>
        <maven.antrun.plugin.version>1.7</maven.antrun.plugin.version>
        <checkstyle.conf.dir>${basedir}/${hive.path.to.root}/checkstyle</checkstyle.conf.dir>
        <maven.checkstyle.plugin.version>2.17</maven.checkstyle.plugin.version>
        <maven.surefire.version>2.20.1</maven.surefire.version>
    </properties>
    <modules>
        <module>pre-upgrade</module>
    </modules>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>${maven.checkstyle.plugin.version}</version>
                <configuration>
                    <configLocation>${checkstyle.conf.dir}/checkstyle.xml</configLocation>
                    <propertyExpansion>config_loc=${checkstyle.conf.dir}</propertyExpansion>
                    <includeTestSourceDirectory>true</includeTestSourceDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>