<?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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.kududb</groupId>
        <artifactId>kudu-parent</artifactId>
        <version>0.8.0</version>
    </parent>

    <artifactId>kudu-client</artifactId>
    <name>Kudu Java Client</name>

    <dependencies>
        <dependency>
            <groupId>org.kududb</groupId>
            <artifactId>interface-annotations</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>${protobuf.version}</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>${guava.version}</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty</artifactId>
            <version>${netty.version}</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>${mockito-all.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <!-- Not shaded or included in the client JAR because it's part
                 of the public API. -->
            <groupId>com.stumbleupon</groupId>
            <artifactId>async</artifactId>
            <version>${async.version}</version>
        </dependency>
        <dependency>
            <groupId>com.sangupta</groupId>
            <artifactId>murmur</artifactId>
            <version>${murmur.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>${commons-io.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>com.google.protobuf.tools</groupId>
                <artifactId>maven-protoc-plugin</artifactId>
                <version>${maven-protoc-plugin.version}</version>
                <configuration>
                    <!-- Documented at:
                         http://sergei-ivanov.github.io/maven-protoc-plugin/compile-mojo.html -->
                    <checkStaleness>true</checkStaleness>
                    <protoSourceRoot>${project.basedir}/../../src</protoSourceRoot>
                    <protocExecutable>
                      ${project.basedir}/../../thirdparty/installed-deps/bin/protoc
                    </protocExecutable>
                    <!-- Where we'll look for built-in .proto files such as
                         google/protobuf/descriptor.proto. -->
                    <additionalProtoPathElements>
                      <additionalProtoPathElement>
                        ${project.basedir}/../../thirdparty/installed-deps/include
                      </additionalProtoPathElement>
                    </additionalProtoPathElements>
                    <excludes>
                      <exclude>**/*test*.proto</exclude>
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <phase>generate-sources</phase>
                    </execution>
                </executions>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-clean-plugin</artifactId>
              <version>2.5</version>
              <executions>
                <execution>
                  <id>delete-test-protos</id>
                  <!-- maven-protoc-plugin copies proto files as part of the
                       default-resources execution in the process-resources
                       phase. -->
                  <phase>process-resources</phase>
                  <goals>
                    <goal>clean</goal>
                  </goals>
                  <configuration>
                    <excludeDefaultDirectories>true</excludeDefaultDirectories>
                    <filesets>
                      <fileset>
                        <directory>${project.build.directory}/classes</directory>
                        <includes>
                          <include>**/*test*.proto</include>
                        </includes>
                      </fileset>
                    </filesets>
                  </configuration>
                </execution>
              </executions>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-shade-plugin</artifactId>
              <version>2.3</version>
              <configuration>
                <artifactSet>
                  <includes>
                    <include>com.google.guava:guava</include>
                    <include>com.google.protobuf:protobuf-java</include>
                    <include>com.sangupta:murmur</include>
                    <include>io.netty:netty</include>
                  </includes>
                </artifactSet>
                <relocations>
                  <relocation>
                    <pattern>com.google.common</pattern>
                    <shadedPattern>org.kududb.client.shaded.com.google.common</shadedPattern>
                  </relocation>
                  <relocation>
                    <pattern>com.google.protobuf</pattern>
                    <shadedPattern>org.kududb.client.shaded.com.google.protobuf</shadedPattern>
                  </relocation>
                  <relocation>
                    <pattern>com.sangupta</pattern>
                    <shadedPattern>org.kududb.client.shaded.com.sangupta</shadedPattern>
                  </relocation>
                  <relocation>
                    <pattern>org.jboss.netty</pattern>
                    <shadedPattern>org.kududb.client.shaded.org.jboss.netty</shadedPattern>
                  </relocation>
                </relocations>
              </configuration>
              <executions>
                <execution>
                  <phase>package</phase>
                  <goals>
                    <goal>shade</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
            <!-- Attach source and javadoc to packaged jar -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-source-plugin</artifactId>
              <version>2.4</version>
              <executions>
                <execution>
                  <id>attach-sources</id>
                  <goals>
                    <goal>jar</goal>
                  </goals>
                </execution>
                <execution>
                  <id>attach-test-sources</id>
                  <goals>
                    <goal>test-jar</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <version>2.10.3</version>
              <executions>
                <execution>
                  <id>attach-javadocs</id>
                  <goals>
                    <goal>jar</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.6</version>
            <executions>
              <execution>
                <goals>
                  <goal>test-jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
          </plugins>

        <!-- This big ol' block of nonsense tells the m2e Eclipse plugin what
             to do with maven plugins that don't have m2e "extensions" available.

             It doesn't affect the Maven build at all. -->
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.eclipse.m2e</groupId>
              <artifactId>lifecycle-mapping</artifactId>
              <version>1.0.0</version>
              <configuration>
                <lifecycleMappingMetadata>
                  <pluginExecutions>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <versionRange>[${maven-antrun-plugin.version},)</versionRange>
                        <goals>
                          <goal>run</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <execute>
                          <runOnIncremental>false</runOnIncremental>
                        </execute>
                      </action>
                    </pluginExecution>
                    <pluginExecution>
                      <pluginExecutionFilter>
                        <groupId>com.google.protobuf.tools</groupId>
                        <artifactId>maven-protoc-plugin</artifactId>
                        <versionRange>[${maven-protoc-plugin.version},)</versionRange>
                        <goals>
                          <goal>compile</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <execute>
                          <runOnIncremental>false</runOnIncremental>
                        </execute>
                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
    </build>

    <profiles>
      <!-- If thirdparty's protoc can't be found, this profile will activate and
           use the system's protoc during the build. -->
      <profile>
        <id>protoc-system</id>
        <activation>
          <file>
            <missing>${basedir}/../../thirdparty/installed-deps/bin/protoc</missing>
          </file>
        </activation>
        <build>
          <plugins>
            <plugin>
              <groupId>com.google.protobuf.tools</groupId>
              <artifactId>maven-protoc-plugin</artifactId>
              <version>${maven-protoc-plugin.version}</version>
              <configuration>
                <protocExecutable>protoc</protocExecutable>
                <additionalProtoPathElements>
                  <additionalProtoPathElement>/usr/include</additionalProtoPathElement>
                  <additionalProtoPathElement>/usr/local/include</additionalProtoPathElement>
                </additionalProtoPathElements>
              </configuration>
            </plugin>
          </plugins>
        </build>
      </profile>
    </profiles>
</project>
