<?xml version="1.0" encoding="UTF-8"?>
<!--
//
// 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="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>

    <groupId>org.apache.kudu</groupId>
    <artifactId>kudu-parent</artifactId>
    <version>1.2.0</version>
    <packaging>pom</packaging>

    <!-- inherit from the ASF POM for distribution management -->
    <parent>
      <groupId>org.apache</groupId>
      <artifactId>apache</artifactId>
      <version>18</version>
      <relativePath/>
    </parent>

    <name>Kudu</name>

    <description>
        Kudu.
    </description>

    <!-- Properties Management -->
    <properties>
        <!-- Platform encoding override -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <!-- Maven plugins -->
        <maven-antrun-plugin.version>1.7</maven-antrun-plugin.version>
        <maven-assembly-plugin.version>2.6</maven-assembly-plugin.version>
        <maven-enforcer-plugin.version>1.4</maven-enforcer-plugin.version>
        <maven-protoc-plugin.version>0.1.10</maven-protoc-plugin.version>
        <maven-surefire-plugin.version>2.18</maven-surefire-plugin.version>
        <maven-failsafe-plugin.version>2.18</maven-failsafe-plugin.version>
        <schema-validator-maven-plugin.version>5.5.3</schema-validator-maven-plugin.version>

        <!-- Library dependencies -->
        <async.version>1.4.1</async.version>
        <commons-io.version>2.4</commons-io.version>
        <guava.version>18.0</guava.version>
        <hadoop.version>2.7.2</hadoop.version>
        <jsr305.version>3.0.1</jsr305.version>
        <hamcrest-core.version>1.3</hamcrest-core.version>
        <junit.version>4.11</junit.version>
        <log4j.version>1.2.17</log4j.version>
        <mockito-core.version>1.9.0</mockito-core.version>
        <murmur.version>1.0.0</murmur.version>
        <netty.version>3.10.5.Final</netty.version>
        <protobuf.version>2.6.1</protobuf.version>
        <slf4j.version>1.7.12</slf4j.version>

        <!-- Misc variables -->
        <testdata.dir>target/testdata</testdata.dir>
        <testArgLine>-enableassertions -Xmx1900m
        -Djava.security.egd=file:/dev/./urandom -Djava.net.preferIPv4Stack=true
        -Djava.awt.headless=true</testArgLine>
    </properties>

    <modules>
        <module>interface-annotations</module>
        <module>kudu-client</module>
        <module>kudu-client-tools</module>
        <module>kudu-mapreduce</module>
        <module>kudu-spark</module>
        <module>kudu-flume-sink</module>
    </modules>

    <build>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <version>${maven-enforcer-plugin.version}</version>
                    <configuration>
                        <rules>
                            <requireMavenVersion>
                                <version>[3.0.2,)</version>
                            </requireMavenVersion>
                            <requireJavaVersion>
                                <version>[1.7,)</version>
                            </requireJavaVersion>
                        </rules>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <version>${maven-failsafe-plugin.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>integration-test</goal>
                                <goal>verify</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <failIfNoTests>false</failIfNoTests>
                        <reuseForks>false</reuseForks>
                        <redirectTestOutputToFile>true</redirectTestOutputToFile>
                        <argLine>${testArgLine}</argLine>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>${maven-surefire-plugin.version}</version>
                    <configuration>
                        <failIfNoTests>false</failIfNoTests>
                        <reuseForks>false</reuseForks>
                        <redirectTestOutputToFile>true</redirectTestOutputToFile>
                        <argLine>${testArgLine}</argLine>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <inherited>false</inherited>
                <executions>
                    <execution>
                        <id>clean</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <phase>pre-clean</phase>
                    </execution>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <phase>validate</phase>
                    </execution>
                    <execution>
                        <id>site</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <phase>pre-site</phase>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.2</version>
                <executions>
                    <execution>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>${maven-antrun-plugin.version}</version>
                <executions>
                    <execution>
                        <phase>test-compile</phase>
                        <configuration>
                            <target>
                                <delete dir="${testdata.dir}"/>
                                <mkdir dir="${testdata.dir}"/>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.10.3</version>
                <configuration>
                    <maxmemory>2048m</maxmemory>
                    <notimestamp>true</notimestamp>
                    <doclet>
                        org.apache.kudu.annotations.tools.IncludePublicAnnotationsStandardDoclet
                    </doclet>
                    <docletArtifact>
                        <groupId>org.apache.kudu</groupId>
                        <artifactId>interface-annotations</artifactId>
                        <version>${project.version}</version>
                    </docletArtifact>
                    <name>User API</name>
                    <description>The Kudu Application Programmer's API</description>
                    <excludePackageNames>
                        com.google:org.apache.kudu.cfile:org.apache.kudu.consensus:org.apache.kudu.log:org.apache.kudu.master:org.apache.kudu.rpc:org.apache.kudu.server:org.apache.kudu.tablet:org.apache.kudu.tserver
                    </excludePackageNames>
                    <includeDependencySources>false</includeDependencySources>

                    <dependencySourceIncludes>
                        <dependencySourceInclude>
                            org.apache.kudu:interface-annotations
                        </dependencySourceInclude>
                    </dependencySourceIncludes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.17</version>
                <dependencies>
                    <dependency>
                        <groupId>com.puppycrawl.tools</groupId>
                        <artifactId>checkstyle</artifactId>
                        <version>6.19</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>validate</phase>
                        <configuration>
                            <configLocation>kudu_style.xml</configLocation>
                            <encoding>UTF-8</encoding>
                            <consoleOutput>true</consoleOutput>
                            <failsOnError>false</failsOnError>
                        </configuration>
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <pluginRepositories>
      <!-- For maven-protoc-plugin -->
      <pluginRepository>
        <id>protoc-plugin</id>
        <url>http://maven.davidtrott.com/repository</url>
        <name>Protoc Plugin Repository</name>
      </pluginRepository>
      <!-- For schema-validator-maven-plugin -->
      <pluginRepository>
        <id>schema-validator-maven-plugin</id>
        <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
        <name>Cloudera Plugin Repositories</name>
      </pluginRepository>
    </pluginRepositories>

  <repositories>
    <repository>
      <id>cdh.repo</id>
      <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
      <name>Cloudera Repositories</name>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
 </repositories>

  <profiles>
    <!-- Build the CSD.

         Disabled by default; add -PbuildCSD to the maven command line. -->
    <profile>
      <id>buildCSD</id>
      <modules>
        <module>kudu-csd</module>
      </modules>
    </profile>
  </profiles>
</project>
