<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.apache.accumulo</groupId>
    <artifactId>accumulo-project</artifactId>
    <version>2.1.0-SNAPSHOT</version>
  </parent>
  <artifactId>accumulo-core</artifactId>
  <name>Apache Accumulo Core</name>
  <description>Apache Accumulo core libraries.</description>
  <dependencies>
    <dependency>
      <groupId>com.beust</groupId>
      <artifactId>jcommander</artifactId>
    </dependency>
    <dependency>
      <groupId>com.github.ben-manes.caffeine</groupId>
      <artifactId>caffeine</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.auto.service</groupId>
      <artifactId>auto-service</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <exclusions>
        <exclusion>
          <groupId>com.google.guava</groupId>
          <artifactId>listenablefuture</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
    </dependency>
    <dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.accumulo</groupId>
      <artifactId>accumulo-start</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-collections4</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-configuration2</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-math3</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.htrace</groupId>
      <artifactId>htrace-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-1.2-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.thrift</groupId>
      <artifactId>libthrift</artifactId>
      <exclusions>
        <exclusion>
          <groupId>org.apache.httpcomponents</groupId>
          <artifactId>httpcore</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <exclusions>
        <exclusion>
          <groupId>io.netty</groupId>
          <artifactId>netty</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper-jute</artifactId>
    </dependency>
    <dependency>
      <groupId>org.jline</groupId>
      <artifactId>jline</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client-runtime</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client-minicluster</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <testResources>
      <testResource>
        <filtering>true</filtering>
        <directory>src/test/filtered-resources</directory>
      </testResource>
      <testResource>
        <filtering>false</filtering>
        <directory>src/test/resources</directory>
      </testResource>
    </testResources>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.mycila</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <configuration>
            <excludes>
              <exclude>src/main/java/org/apache/accumulo/core/bloomfilter/*.java</exclude>
              <exclude>src/main/java/org/apache/accumulo/core/util/HostAndPort.java</exclude>
              <exclude>src/test/resources/*.jceks</exclude>
              <exclude>src/test/resources/org/apache/accumulo/core/file/rfile/*.rf</exclude>
            </excludes>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.rat</groupId>
          <artifactId>apache-rat-plugin</artifactId>
          <configuration>
            <excludes>
              <exclude>src/main/java/org/apache/accumulo/core/bloomfilter/*.java</exclude>
              <exclude>src/test/resources/*.jceks</exclude>
              <exclude>src/test/resources/org/apache/accumulo/core/file/rfile/*.rf</exclude>
            </excludes>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>net.revelc.code</groupId>
        <artifactId>apilyzer-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>apilyzer</id>
            <goals>
              <goal>analyze</goal>
            </goals>
            <configuration>
              <includes>
                <include>org[.]apache[.]accumulo[.]core[.]client[.].*</include>
                <include>org[.]apache[.]accumulo[.]core[.]data[.].*</include>
                <include>org[.]apache[.]accumulo[.]core[.]security[.].*</include>
                <include>org[.]apache[.]accumulo[.]core[.]iterators[.].*</include>
                <!-- The following types are not advertised as in API, but are
		     used in a such a way by API classes that we want to
		     ensure they do not reference non public API types.
		     Ideally no new uses of these classes would occur in the
		     API.  These types were not placed in the allows set
		     because no analysis is done on types in that set. -->
                <include>org[.]apache[.]accumulo[.]core[.]util[.](Pair|ComparablePair)</include>
              </includes>
              <excludes>
                <exclude>.*[.]impl[.].*</exclude>
                <exclude>.*[.]thrift[.].*</exclude>
                <exclude>org[.]apache[.]accumulo[.]core[.]security[.]crypto[.].*</exclude>
              </excludes>
              <allows>
                <!--Allow API data types to reference thrift types, but do not
		     analyze thrift types -->
                <allow>org[.]apache[.]accumulo[.].*[.]thrift[.].*</allow>
                <!--Type from hadoop used in API. If adding a new type from
		     Hadoop to the Accumulo API ensure its annotated as
		     stable.-->
                <allow>org[.]apache[.]hadoop[.]conf[.]Configuration</allow>
                <allow>org[.]apache[.]hadoop[.]fs[.](FileSystem|Path)</allow>
                <allow>org[.]apache[.]hadoop[.]io[.](Text|Writable|WritableComparable|WritableComparator)</allow>
                <allow>org[.]apache[.]hadoop[.]mapred[.](JobConf|RecordReader|InputSplit|RecordWriter|Reporter)</allow>
                <allow>org[.]apache[.]hadoop[.]mapreduce[.](Job|JobContext|RecordReader|InputSplit|TaskAttemptContext|RecordWriter|OutputCommitter|TaskInputOutputContext)</allow>
                <allow>org[.]apache[.]hadoop[.]util[.]Progressable</allow>
                <!-- allow javax security exceptions for Authentication tokens -->
                <allow>javax[.]security[.]auth[.]DestroyFailedException</allow>
                <!-- allow questionable Hadoop exceptions for mapreduce -->
                <allow>org[.]apache[.]hadoop[.]mapred[.](FileAlreadyExistsException|InvalidJobConfException)</allow>
              </allows>
            </configuration>
          </execution>
          <execution>
            <id>apilyzer-spi</id>
            <goals>
              <goal>analyze</goal>
            </goals>
            <configuration>
              <outputFile>${project.build.directory}/apilyzer-spi.txt</outputFile>
              <includes>
                <include>org[.]apache[.]accumulo[.]core[.]spi[.].*</include>
              </includes>
              <excludes />
              <allows>
                <allow>org[.]apache[.]hadoop[.]io[.]Text</allow>
                <allow>org[.]apache[.]accumulo[.]core[.]client[.].*</allow>
                <allow>org[.]apache[.]accumulo[.]core[.]data[.].*</allow>
                <allow>org[.]apache[.]accumulo[.]core[.]security[.].*</allow>
              </allows>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <executions>
          <execution>
            <id>prepare-filtered-java-source</id>
            <goals>
              <goal>copy-resources</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <outputDirectory>${project.build.directory}/filtered-java-src</outputDirectory>
              <resources>
                <resource>
                  <directory>src/main/java-filtered</directory>
                  <filtering>true</filtering>
                </resource>
              </resources>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>add-filtered-java-source</id>
            <goals>
              <goal>add-source</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
              <sources>
                <source>${project.build.directory}/filtered-java-src</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>prep-output-dir</id>
            <goals>
              <goal>exec</goal>
            </goals>
            <phase>prepare-package</phase>
            <configuration>
              <executable>mkdir</executable>
              <arguments>
                <argument>-p</argument>
                <argument>${project.build.directory}/generated-docs</argument>
              </arguments>
            </configuration>
          </execution>
          <execution>
            <id>config-appendix</id>
            <goals>
              <goal>java</goal>
            </goals>
            <phase>package</phase>
            <configuration>
              <mainClass>org.apache.accumulo.core.conf.ConfigurationDocGen</mainClass>
              <classpathScope>test</classpathScope>
              <arguments>
                <argument>--generate-markdown</argument>
                <argument>${project.build.directory}/generated-docs/server-properties.md</argument>
              </arguments>
            </configuration>
          </execution>
          <execution>
            <id>client-props-markdown</id>
            <goals>
              <goal>java</goal>
            </goals>
            <phase>package</phase>
            <configuration>
              <mainClass>org.apache.accumulo.core.conf.ClientConfigGenerate</mainClass>
              <classpathScope>test</classpathScope>
              <arguments>
                <argument>--generate-markdown</argument>
                <argument>${project.build.directory}/generated-docs/client-properties.md</argument>
              </arguments>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>thrift</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>generate-thrift</id>
                <goals>
                  <goal>exec</goal>
                </goals>
                <phase>generate-sources</phase>
                <configuration>
                  <executable>${basedir}/src/main/scripts/generate-thrift.sh</executable>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
