<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2015 Google LLC

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>

  <groupId>com.google.cloud.bigtable</groupId>
  <artifactId>bigtable-client-parent</artifactId>
  <version>2.0.0-alpha2</version> <!-- {x-version-update:bigtable-client-parent:current} -->
  <packaging>pom</packaging>
  <name>${project.groupId}:${project.artifactId}</name>
  <url>https://cloud.google.com/bigtable/</url>
  <description>
    This is a client to access Cloud Bigtable
    (https://cloud.google.com/bigtable/) via the HBase APIs.
  </description>
  <!-- TODO: improve the description -->

  <parent>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-shared-config</artifactId>
    <version>1.0.0</version>
  </parent>

  <licenses>
    <license>
      <name>The Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <modules>
    <module>bigtable-client-core-parent</module>
    <module>bigtable-hbase-1.x-parent</module>
    <module>bigtable-hbase-2.x-parent</module>
    <module>bigtable-dataflow-parent</module>
    <module>bigtable-test</module>
  </modules>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    <!-- core dependency versions -->
    <bigtable.version>2.0.1</bigtable.version>
    <bigtable-client-core.version>1.23.0</bigtable-client-core.version>
    <grpc-conscrypt.version>2.5.1</grpc-conscrypt.version>
    <!--  keeping at this version to align with hbase-->
    <slf4j.version>1.7.25</slf4j.version>
    <commons-logging.version>1.2</commons-logging.version>
    <jsr305.version>3.0.2</jsr305.version>

    <!-- hbase dependency versions -->
    <hbase1.version>1.4.12</hbase1.version>
    <hbase1-metrics.version>3.1.2</hbase1-metrics.version>
    <hbase2.version>2.2.3</hbase2.version>
    <hbase2-metrics.version>3.2.6</hbase2-metrics.version>

    <!-- testing dependency versions -->
    <commons-lang.version>2.6</commons-lang.version>
    <junit.version>4.13.2</junit.version>
    <hamcrest.version>1.3</hamcrest.version>
    <mockito.version>3.8.0</mockito.version>
    <!-- TODO: check if commons-codec was transitively updated to 1.13 and okhttp was updated to 2.7.5 when upgrading-->
    <beam.version>2.28.0</beam.version>
    <!-- referred from bigtable-beam-import and bigtable-emulator -->
    <guava.version>30.1.1-jre</guava.version>
    <gcs-guava.version>29.0-jre</gcs-guava.version>
    <beam-slf4j.version>1.7.30</beam-slf4j.version>

    <!-- Benchmarks related dependencies -->
    <jmh.version>1.28</jmh.version>
  </properties>

  <scm>
    <connection>
      scm:git:git@github.com:googleapis/java-bigtable-hbase.git
    </connection>
    <developerConnection>
      scm:git:git@github.com:googleapis/java-bigtable-hbase.git
    </developerConnection>
    <url>https://github.com/googleapis/java-bigtable-hbase</url>
    <tag>HEAD</tag>
  </scm>

  <developers>
    <developer>
      <organization>Google</organization>
      <organizationUrl>http://www.google.com</organizationUrl>
    </developer>
  </developers>

  <issueManagement>
    <system>GitHub Issues</system>
    <url>https://github.com/googleapis/java-bigtable-hbase/issues</url>
  </issueManagement>

  <build>
    <testResources>
      <testResource>
        <directory>src/test/resources</directory>
        <!-- enable system property substitution. -->
        <filtering>true</filtering>
      </testResource>
    </testResources>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>

        <!-- Augment google-cloud-shared-config config to exclude non-compile deps -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <configuration>
            <ignoreNonCompile>true</ignoreNonCompile>
          </configuration>
        </plugin>

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.2</version>
          <configuration>
            <trimStackTrace>false</trimStackTrace>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>2.22.2</version>
          <configuration>
            <trimStackTrace>false</trimStackTrace>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.2.4</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.2.0</version>
          <configuration>
            <doclint>none</doclint>
            <windowtitle>
              Cloud Bigtable HBase Client for Java API
            </windowtitle>
            <doctitle>
              Cloud Bigtable HBase Client for Java API
            </doctitle>
            <overview>../overview.html</overview>
            <bottom><![CDATA[<br>]]></bottom>

            <offlineLinks>
              <offlineLink>
                <url>
                  https://google.github.io/guava/releases/27.0-jre/api/docs/
                </url>
                <location>${basedir}/javadoc/guava-docs</location>
              </offlineLink>
              <offlineLink>
                <url>https://hbase.apache.org/2.0/devapidocs/</url>
                <location>${basedir}/javadoc/hbase-docs</location>
              </offlineLink>
              <offlineLink>
                <url>
                  https://static.javadoc.io/com.google.protobuf/protobuf-java/3.6.1/
                </url>
                <location>${basedir}/javadoc/protobuf-docs</location>
              </offlineLink>
            </offlineLinks>
          </configuration>
          <executions>
            <execution>
              <id>attach-javadocs</id>
              <goals>
                <goal>jar</goal>
              </goals>
              <phase>package</phase>
              <configuration>
                <!--
                javadoc excluded packages:
                    com.google.clooud.*                             (Ignore, a hack/workaround for separate maven issue)
                -->
                <excludePackageNames>com.google.clooud</excludePackageNames>
              </configuration>
            </execution>
            <execution>
              <id>default-cli</id>
              <configuration>
                <!--
                javadoc excluded packages:
                    com.google.cloud.bigtable.beam{.sequencefiles}  (Breaks with javadoc:aggregate, handled separately)
                    com.google.cloud.bigtable.dataflow{import,}     (Breaks with javadoc:aggregate, handled separately)
                    com.google.clooud.*                             (Ignore, a hack/workaround for separate maven issue)
                -->
                <excludePackageNames>
                  com.google.cloud.bigtable.beam:com.google.cloud.bigtable.beam.sequencefiles:com.google.cloud.bigtable.dataflow:com.google.cloud.bigtable.dataflowimport:com.google.clooud
                </excludePackageNames>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>com.coveo</groupId>
        <artifactId>fmt-maven-plugin</artifactId>
        <version>2.9</version>
        <executions>
          <execution>
            <phase>process-sources</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <style>google</style>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <executions>
          <execution>
            <id>enforce-version-consistency</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireSameVersions>
                  <dependencies>
                    <dependency>io.grpc:*</dependency>
                  </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                  <dependencies>
                    <dependency>io.opencensus:*</dependency>
                  </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                  <dependencies>
                    <dependency>com.google.cloud:google-cloud-bigtable</dependency>
                    <dependency>com.google.api.grpc:proto-google-cloud-bigtable-v2</dependency>
                    <dependency>com.google.api.grpc:grpc-google-cloud-bigtable-v2</dependency>
                    <dependency>com.google.api.grpc:proto-google-cloud-bigtable-admin-v2</dependency>
                    <dependency>com.google.api.grpc:grpc-google-cloud-bigtable-admin-v2</dependency>
                  </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                  <dependencies>
                    <dependency>com.google.auth:*</dependency>
                  </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                  <dependencies>
                    <dependency>com.google.api:gax</dependency>
                    <dependency>com.google.api:gax-grpc</dependency>
                  </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                  <dependencies>
                    <dependency>org.apache.beam:beam-sdks-*</dependency>
                    <dependency>org.apache.beam:beam-model-*</dependency>
                  </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                  <dependencies>
                    <dependency>io.netty:netty-all</dependency>
                    <dependency>io.netty:netty-codec*</dependency>
                    <dependency>io.netty:netty-handler*</dependency>
                    <dependency>io.netty:netty-common</dependency>
                    <dependency>io.netty:netty-resolver</dependency>
                    <dependency>io.netty:netty-buffer</dependency>
                    <dependency>io.netty:netty-transport</dependency>
                    <!-- Everything but netty-tcnative-boringssl-static -->
                  </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                  <dependencies>
                    <dependency>com.fasterxml.jackson.core:*</dependency>
                    <dependency>com.fasterxml.jackson:*</dependency>
                  </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                  <dependencies>
                    <dependency>com.google.auto.value</dependency>
                  </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                  <dependencies>
                    <dependency>org.hamcrest:*</dependency>
                  </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                  <dependencies>
                    <dependency>com.google.protobuf:*</dependency>
                  </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                  <dependencies>
                    <dependency>com.google.http-client:*</dependency>
                  </dependencies>
                </requireSameVersions>
              </rules>
            </configuration>
          </execution>
          <!-- extract slf4 consistency check to own execution so it can be
          disabled for hbase-client 2.x -->
          <execution>
            <id>enforce-version-consistency-slf4j</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireSameVersions>
                  <dependencies>
                    <dependency>org.slf4j:*</dependency>
                  </dependencies>
                </requireSameVersions>
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>enforce-banned-deps</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <bannedDependencies>
                  <excludes>
                    <exclude>commons-codec:commons-codec:[,1.15)</exclude>
                    <exclude>org.apache.commons:commons-compress:[,1.20)</exclude>
                  </excludes>
                </bannedDependencies>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>useBigtableSnapshots</id>
      <!-- use the snapshot veneer artifact to run the tests-->
      <properties>
        <bigtable.version>LATEST</bigtable.version>
      </properties>

      <repositories>
        <repository>
          <id>sonatype-snapshots</id>
          <url>https://oss.sonatype.org/content/repositories/snapshots</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>
</project>
