<?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.apache</groupId>
    <artifactId>apache</artifactId>
    <version>24</version>
  </parent>
  <groupId>org.apache.accumulo</groupId>
  <artifactId>accumulo-examples</artifactId>
  <version>2.1.0-SNAPSHOT</version>
  <name>Apache Accumulo Examples</name>
  <description>Example code and corresponding documentation for using Apache Accumulo</description>
  <properties>
    <accumulo.version>2.1.0-SNAPSHOT</accumulo.version>
    <eclipseFormatterStyle>contrib/Eclipse-Accumulo-Codestyle.xml</eclipseFormatterStyle>
    <hadoop.version>3.3.0</hadoop.version>
    <htrace.hadoop.version>4.1.0-incubating</htrace.hadoop.version>
    <htrace.version>3.2.0-incubating</htrace.version>
    <maven.compiler.release>11</maven.compiler.release>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
    <minimalJavaBuildVersion>11</minimalJavaBuildVersion>
    <minimalMavenBuildVersion>3.5.0</minimalMavenBuildVersion>
    <!-- timestamp for reproducible outputs, updated on release by the release plugin -->
    <project.build.outputTimestamp>2020-12-17T22:06:50Z</project.build.outputTimestamp>
    <zookeeper.version>3.5.9</zookeeper.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.apache.accumulo</groupId>
        <artifactId>accumulo-project</artifactId>
        <version>${accumulo.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.apache.htrace</groupId>
        <artifactId>htrace-core</artifactId>
        <version>${htrace.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.beust</groupId>
      <artifactId>jcommander</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.accumulo</groupId>
      <artifactId>accumulo-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.accumulo</groupId>
      <artifactId>accumulo-hadoop-mapreduce</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.accumulo</groupId>
      <artifactId>accumulo-tracer</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.hadoop</groupId>
      <artifactId>hadoop-client</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.htrace</groupId>
      <artifactId>htrace-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.htrace</groupId>
      <artifactId>htrace-core4</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
    </dependency>
    <!-- Test dependencies -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.accumulo</groupId>
      <artifactId>accumulo-minicluster</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.accumulo</groupId>
      <artifactId>accumulo-test</artifactId>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>${project.artifactId}</finalName>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <optimize>true</optimize>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.github.ekryd.sortpom</groupId>
          <artifactId>sortpom-maven-plugin</artifactId>
          <version>3.0.0</version>
          <configuration>
            <createBackupFile>false</createBackupFile>
            <expandEmptyElements>false</expandEmptyElements>
            <keepBlankLines>false</keepBlankLines>
            <lineSeparator>\n</lineSeparator>
            <nrOfIndentSpace>2</nrOfIndentSpace>
            <predefinedSortOrder>recommended_2008_06</predefinedSortOrder>
            <sortDependencies>scope,groupId,artifactId</sortDependencies>
            <sortProperties>true</sortProperties>
            <spaceBeforeCloseEmptyElement>true</spaceBeforeCloseEmptyElement>
            <verifyFail>Stop</verifyFail>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.2.1</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <executions>
          <execution>
            <id>run-integration-tests</id>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <!-- This was added to ensure project only uses public API -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>3.1.2</version>
        <configuration>
          <configLocation>contrib/checkstyle.xml</configLocation>
        </configuration>
        <dependencies>
          <dependency>
            <groupId>com.puppycrawl.tools</groupId>
            <artifactId>checkstyle</artifactId>
            <version>9.1</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <id>check-style</id>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>net.revelc.code</groupId>
        <artifactId>impsort-maven-plugin</artifactId>
        <version>1.6.2</version>
        <configuration>
          <removeUnused>true</removeUnused>
          <groups>java.,javax.,org.,com.</groups>
        </configuration>
        <executions>
          <execution>
            <id>sort-imports</id>
            <goals>
              <goal>sort</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <!-- verify before compile; should be sorted already -->
        <groupId>com.github.ekryd.sortpom</groupId>
        <artifactId>sortpom-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>sort-pom</id>
            <goals>
              <goal>sort</goal>
            </goals>
            <phase>validate</phase>
          </execution>
          <execution>
            <id>verify-sorted-pom</id>
            <goals>
              <goal>verify</goal>
            </goals>
            <phase>process-resources</phase>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>net.revelc.code.formatter</groupId>
        <artifactId>formatter-maven-plugin</artifactId>
        <version>2.17.1</version>
        <configuration>
          <compilerCompliance>${maven.compiler.source}</compilerCompliance>
          <compilerSource>${maven.compiler.source}</compilerSource>
          <compilerTargetPlatform>${maven.compiler.target}</compilerTargetPlatform>
          <configFile>${eclipseFormatterStyle}</configFile>
          <lineEnding>LF</lineEnding>
          <overrideConfigCompilerVersion>true</overrideConfigCompilerVersion>
          <removeTrailingWhitespace>true</removeTrailingWhitespace>
          <skipCssFormatting>true</skipCssFormatting>
          <skipHtmlFormatting>true</skipHtmlFormatting>
          <skipJsFormatting>true</skipJsFormatting>
          <skipJsonFormatting>true</skipJsonFormatting>
          <skipXmlFormatting>true</skipXmlFormatting>
        </configuration>
        <executions>
          <execution>
            <id>format-java-source</id>
            <goals>
              <goal>format</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>create-shade-jar</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
              <execution>
                <id>example-shade-jar</id>
                <goals>
                  <goal>shade</goal>
                </goals>
                <phase>package</phase>
                <configuration>
                  <createDependencyReducedPom>false</createDependencyReducedPom>
                  <finalName>${project.artifactId}-shaded</finalName>
                  <shadedArtifactAttached>true</shadedArtifactAttached>
                  <shadedClassifierName>shaded</shadedClassifierName>
                  <artifactSet>
                    <excludes>
                      <exclude>org.apache.accumulo:accumulo-native</exclude>
                      <exclude>org.apache.logging.log4j:log4j-api:jar:</exclude>
                      <exclude>org.apache.logging.log4j:log4j-1.2-api:jar:</exclude>
                      <exclude>org.apache.logging.log4j:log4j-slf4j-impl:jar:</exclude>
                      <exclude>javax.activation:javax.activation-api:jar:</exclude>
                      <exclude>org.apache.hadoop:hadoop-annotations:jar:</exclude>
                      <exclude>org.apache.hadoop:hadoop-auth:jar:</exclude>
                      <exclude>org.apache.hadoop:hadoop-mapreduce-client-common:jar:</exclude>
                      <exclude>org.apache.hadoop:hadoop-yarn-api:jar:</exclude>
                      <exclude>org.apache.hadoop:hadoop-yarn-common:jar:</exclude>
                      <exclude>org.apache.hadoop:hadoop-mapreduce-client-core:jar:</exclude>
                      <exclude>org.apache.hadoop:hadoop-common:jar:</exclude>
                      <exclude>org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:</exclude>
                      <exclude>org.apache.hadoop:hadoop-yarn-client:jar:</exclude>
                      <exclude>org.apache.hadoop:hadoop-hdfs-client:jar:</exclude>
                      <exclude>org.apache.hadoop.thirdparty:hadoop-shaded-protobuf_3_7:jar:</exclude>
                    </excludes>
                  </artifactSet>
                  <filters>
                    <filter>
                      <artifact>*:*</artifact>
                      <excludes>
                        <exclude>module-info.class</exclude>
                        <exclude>META-INF/*.SF</exclude>
                        <exclude>META-INF/*.DSA</exclude>
                        <exclude>META-INF/*.RSA</exclude>
                      </excludes>
                    </filter>
                    <filter>
                      <artifact>*:*</artifact>
                      <excludes>
                        <exclude>**/Log4j2Plugins.dat</exclude>
                      </excludes>
                    </filter>
                  </filters>
                  <transformers>
                    <!-- Hadoop uses service loader to find filesystem impls, without this may not find them -->
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                  </transformers>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>m2e</id>
      <activation>
        <property>
          <name>m2e.version</name>
        </property>
      </activation>
      <build>
        <pluginManagement>
          <plugins>
            <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
            <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-remote-resources-plugin</artifactId>
                        <versionRange>[0,)</versionRange>
                        <goals>
                          <goal>process</goal>
                        </goals>
                      </pluginExecutionFilter>
                      <action>
                        <ignore />
                      </action>
                    </pluginExecution>
                  </pluginExecutions>
                </lifecycleMappingMetadata>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </profile>
  </profiles>
</project>
