<?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>
  <parent>
    <groupId>org.apache.fluo</groupId>
    <artifactId>fluo-parent</artifactId>
    <version>3</version>
  </parent>
  <artifactId>fluo-project</artifactId>
  <version>1.3.0-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Apache Fluo Project</name>
  <description>An implementation of Percolator for Apache Accumulo</description>
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <modules>
    <module>modules/accumulo</module>
    <module>modules/api</module>
    <module>modules/cluster</module>
    <module>modules/core</module>
    <module>modules/command</module>
    <module>modules/distribution</module>
    <module>modules/integration</module>
    <module>modules/mapreduce</module>
    <module>modules/mini</module>
  </modules>
  <scm>
    <connection>scm:git:https://gitbox.apache.org/repos/asf/fluo.git</connection>
    <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/fluo.git</developerConnection>
    <tag>HEAD</tag>
    <url>https://gitbox.apache.org/repos/asf?p=fluo.git</url>
  </scm>
  <issueManagement>
    <system>GitHub</system>
    <url>https://github.com/apache/fluo/issues</url>
  </issueManagement>
  <properties>
    <accumulo.version>1.7.3</accumulo.version>
    <curator.version>2.12.0</curator.version>
    <dropwizard.version>0.8.1</dropwizard.version>
    <findbugs.maxRank>11</findbugs.maxRank>
    <hadoop.version>2.6.3</hadoop.version>
    <logback.version>1.1.3</logback.version>
    <releaseProfiles>fluo-release</releaseProfiles>
    <slf4j.version>1.7.12</slf4j.version>
    <twill.version>0.6.0-incubating</twill.version>
    <zookeeper.version>3.4.8</zookeeper.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback.version}</version>
      </dependency>
      <dependency>
        <groupId>com.beust</groupId>
        <artifactId>jcommander</artifactId>
        <version>1.32</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.8.0</version>
      </dependency>
      <dependency>
        <!-- Guava 13.0.1 is required by Twill (due to beta method usage) -->
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>13.0.1</version>
      </dependency>
      <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.1</version>
      </dependency>
      <dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.10</version>
      </dependency>
      <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
      </dependency>
      <dependency>
        <groupId>io.dropwizard.metrics</groupId>
        <artifactId>metrics-core</artifactId>
        <version>3.1.1</version>
      </dependency>
      <dependency>
        <groupId>io.dropwizard.metrics</groupId>
        <artifactId>metrics-graphite</artifactId>
        <version>3.1.1</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-core</artifactId>
        <version>${accumulo.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-minicluster</artifactId>
        <version>${accumulo.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-test</artifactId>
        <version>${accumulo.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-client</artifactId>
        <version>${curator.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>${curator.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-recipes</artifactId>
        <version>${curator.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.fluo</groupId>
        <artifactId>fluo-accumulo</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.fluo</groupId>
        <artifactId>fluo-api</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.fluo</groupId>
        <artifactId>fluo-cluster</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.fluo</groupId>
        <artifactId>fluo-command</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.fluo</groupId>
        <artifactId>fluo-core</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.fluo</groupId>
        <artifactId>fluo-integration</artifactId>
        <version>${project.version}</version>
        <type>test-jar</type>
      </dependency>
      <dependency>
        <groupId>org.apache.fluo</groupId>
        <artifactId>fluo-mapreduce</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.fluo</groupId>
        <artifactId>fluo-mini</artifactId>
        <version>${project.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-minicluster</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-yarn-client</artifactId>
        <version>${hadoop.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.twill</groupId>
        <artifactId>twill-api</artifactId>
        <version>${twill.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.twill</groupId>
        <artifactId>twill-yarn</artifactId>
        <version>${twill.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>${zookeeper.version}</version>
      </dependency>
      <dependency>
        <groupId>org.easymock</groupId>
        <artifactId>easymock</artifactId>
        <version>3.1</version>
      </dependency>
      <dependency>
        <groupId>org.hdrhistogram</groupId>
        <artifactId>HdrHistogram</artifactId>
        <version>2.1.8</version>
      </dependency>
      <dependency>
        <groupId>org.mpierce.metrics.reservoir</groupId>
        <artifactId>hdrhistogram-metrics-reservoir</artifactId>
        <version>1.1.0</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>
    </dependencies>
  </dependencyManagement>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.accumulo</groupId>
          <artifactId>accumulo-maven-plugin</artifactId>
          <version>${accumulo.version}</version>
          <configuration>
            <instanceName>it-instance-maven</instanceName>
            <rootPassword>ITSecret</rootPassword>
          </configuration>
          <executions>
            <execution>
              <id>run-plugin</id>
              <goals>
                <goal>start</goal>
                <goal>stop</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <excludes>
              <exclude>**/services/org.apache.fluo.core.metrics.ReporterStarter</exclude>
              <exclude>contrib/grafana/**.json</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <configuration>
            <systemPropertyVariables>
              <fluo.it.instance.name>it-instance-maven</fluo.it.instance.name>
              <fluo.it.instance.clear>false</fluo.it.instance.clear>
            </systemPropertyVariables>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <configuration>
            <!-- must put this here, due to MRELEASE-963 -->
            <tagNameFormat>rel/fluo-@{project.version}</tagNameFormat>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>analyze</id>
            <goals>
              <goal>analyze-only</goal>
            </goals>
            <configuration>
              <failOnWarning>true</failOnWarning>
              <ignoredDependencies>
                <ignoredDependency>log4j:log4j:jar:*</ignoredDependency>
                <ignoredDependency>org.apache.hadoop:hadoop-common:jar:${hadoop.version}</ignoredDependency>
                <ignoredDependency>org.apache.hadoop:hadoop-client:jar:${hadoop.version}</ignoredDependency>
                <ignoredDependency>org.apache.hadoop:hadoop-mapreduce-client-core:jar:${hadoop.version}</ignoredDependency>
                <ignoredDependency>org.apache.hadoop:hadoop-yarn-api:jar:${hadoop.version}</ignoredDependency>
                <ignoredDependency>org.apache.hadoop:hadoop-yarn-client:jar:${hadoop.version}</ignoredDependency>
                <ignoredDependency>org.slf4j:slf4j-log4j12:jar:${slf4j.version}</ignoredDependency>
              </ignoredDependencies>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <!-- This profile skips all Quality Assurance checks  -->
      <id>skipQA</id>
      <properties>
        <accumulo.skip>true</accumulo.skip>
        <apilyzer.skip>true</apilyzer.skip>
        <checkstyle.skip>true</checkstyle.skip>
        <findbugs.skip>true</findbugs.skip>
        <mdep.analyze.skip>true</mdep.analyze.skip>
        <modernizer.skip>true</modernizer.skip>
        <rat.skip>true</rat.skip>
        <skipITs>true</skipITs>
        <skipTests>true</skipTests>
      </properties>
    </profile>
    <profile>
      <id>fluo-release</id>
      <!-- some properties to make the release build a bit faster -->
      <properties>
        <checkstyle.skip>true</checkstyle.skip>
        <findbugs.skip>true</findbugs.skip>
        <modernizer.skip>true</modernizer.skip>
        <skipITs>true</skipITs>
        <skipTests>true</skipTests>
      </properties>
    </profile>
    <profile>
      <!-- set proper source assembly name with apache-release and don't attach here -->
      <id>apache-release</id>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-assembly-plugin</artifactId>
              <inherited>false</inherited>
              <configuration>
                <!-- source assembly gets attached in the assemble module -->
                <attach>false</attach>
                <finalName>fluo-${project.version}</finalName>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
  </profiles>
</project>
