<?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.4</hadoop.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.7.0</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>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.beust</groupId>
      <artifactId>jcommander</artifactId>
    </dependency>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
    </dependency>
    <dependency>
      <groupId>io.opentelemetry</groupId>
      <artifactId>opentelemetry-api</artifactId>
    </dependency>
    <dependency>
      <groupId>io.opentelemetry</groupId>
      <artifactId>opentelemetry-context</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.hadoop</groupId>
      <artifactId>hadoop-client-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-1.2-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j2-impl</artifactId>
      <scope>runtime</scope>
    </dependency>
    <!-- Test dependencies -->
    <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>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</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-dependency-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.0.0-M3</version>
        </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>
              <ignoredUsedUndeclaredDependencies />
              <ignoredUnusedDeclaredDependencies>
                <runtime>org.apache.logging.log4j:*</runtime>
              </ignoredUnusedDeclaredDependencies>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <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.3</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.,jakarta.,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.18.0</version>
        <configuration>
          <configFile>${eclipseFormatterStyle}</configFile>
          <lineEnding>LF</lineEnding>
          <overrideConfigCompilerVersion>true</overrideConfigCompilerVersion>
          <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>org.slf4j:slf4j-api:jar:</exclude>
                      <exclude>log4j:log4j:jar:</exclude>
                      <exclude>jakarta.activation:jakarta.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>
