<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (C) 2020 Dremio

    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>org.projectnessie</groupId>
  <artifactId>nessie</artifactId>
  <version>0.30.0</version>
  <packaging>pom</packaging>

  <name>Nessie</name>
  <description>Transactional Catalog for Data Lakes</description>
  <url>https://projectnessie.org</url>
  <organization>
    <name>Project Nessie</name>
    <url>https://projectnessie.org</url>
  </organization>
  <licenses>
    <license>
      <name>The Apache License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <developers>
    <developer>
      <id>jacques-n</id>
      <name>Jacques Nadeau</name>
      <url>https://github.com/jacques-n</url>
    </developer>
    <developer>
      <id>rymurr</id>
      <name>Ryan Murray</name>
      <url>https://github.com/rymurr</url>
    </developer>
    <developer>
      <id>laurentgo</id>
      <name>Laurent Goujon</name>
      <url>https://github.com/laurentgo</url>
    </developer>
    <developer>
      <id>snazy</id>
      <name>Robert Stupp</name>
      <url>https://github.com/snazy</url>
    </developer>
    <developer>
      <id>nastra</id>
      <name>Eduard Tudenhoefner</name>
      <url>https://github.com/nastra</url>
    </developer>
    <developer>
      <id>dimas-b</id>
      <name>Dmitri Bourlatchkov</name>
      <url>https://github.com/dimas-b</url>
    </developer>
    <developer>
      <id>omarsmak</id>
      <name>Omar Al-Safi</name>
      <url>https://github.com/omarsmak</url>
    </developer>
    <developer>
      <id>tomekl007</id>
      <name>Tomasz Lelek</name>
      <url>https://github.com/tomekl007</url>
    </developer>
    <developer>
      <id>XN137</id>
      <name>Christopher Lambert</name>
      <url>https://github.com/XN137</url>
    </developer>
    <developer>
      <id>harshm-dev</id>
      <name>Harsh Maheshwari</name>
      <url>https://github.com/harshm-dev</url>
    </developer>
    <developer>
      <id>ajantha-bhat</id>
      <name>Ajantha Bhat</name>
      <url>https://github.com/ajantha-bhat</url>
    </developer>
  </developers>
  <contributors>
    <contributor>
      <name>Herman Polloni</name>
      <url>https://github.com/hpolloni</url>
    </contributor>
    <contributor>
      <name>Ryan Tse</name>
      <url>https://github.com/ryantse</url>
    </contributor>
    <contributor>
      <name>Mahesh Sapkal</name>
      <url>https://github.com/maheshsapkal</url>
    </contributor>
  </contributors>

  <mailingLists>
    <mailingList>
      <name>Project Nessie List</name>
      <subscribe>projectnessie-subscribe@googlegroups.com</subscribe>
      <unsubscribe>projectnessie-unsubscribe@googlegroups.com</unsubscribe>
      <post>projectnessie@googlegroups.com</post>
      <archive>https://groups.google.com/g/projectnessie</archive>
    </mailingList>
  </mailingLists>

  <modules>
    <module>bom</module>
    <module>model</module>
    <module>clients</module>
    <module>versioned</module>
    <module>servers</module>
    <module>tools</module>
    <module>compatibility</module>
  </modules>

  <scm>
    <connection>scm:git:https://github.com/projectnessie/nessie</connection>
    <developerConnection>scm:git:https://github.com/projectnessie/nessie</developerConnection>
    <url>https://github.com/projectnessie/nessie</url>
    <tag>main</tag>
  </scm>
  <issueManagement>
    <system>Github</system>
    <url>https://github.com/projectnessie/nessie/issues</url>
  </issueManagement>
  <distributionManagement>
    <snapshotRepository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </snapshotRepository>
    <repository>
      <id>ossrh</id>
      <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
    </repository>
  </distributionManagement>

  <properties>
    <!-- Build properties -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.release>8</maven.compiler.release>
    <argLine />
    <quarkus.native.builder-image>quay.io/quarkus/ubi-quarkus-native-image:22.0-java11</quarkus.native.builder-image>
    <test.log.level>INFO</test.log.level>

    <!-- Version properties -->
    <antlr.version>4.10.1</antlr.version>
    <assertj.version>3.22.0</assertj.version>
    <awssdk.version>2.17.190</awssdk.version>
    <bouncycastle.version>1.66</bouncycastle.version>
    <cel.version>0.3.3</cel.version>
    <checkstyle.version>10.2</checkstyle.version>
    <!-- to fix circular dependencies with NessieClient, certain projects need to use the same Nessie version as Iceberg/Delta has -->
    <client.nessie.version>0.18.0</client.nessie.version>
    <deltalake.version>1.1.0-nessie</deltalake.version>
    <dockerjava.version>3.2.13</dockerjava.version>
    <dynamodb.version>1.12.0</dynamodb.version>
    <errorprone-slf4j.version>0.1.11</errorprone-slf4j.version>
    <gatling.maven.version>4.1.5</gatling.maven.version>
    <gatling.version>3.7.6</gatling.version>
    <google-error-prone.version>2.13.1</google-error-prone.version>
    <google-java-format.version>1.15.0</google-java-format.version>
    <guava.version>31.1-jre</guava.version>
    <hadoop.version>3.3.2</hadoop.version>
    <iceberg.version>0.13.1</iceberg.version>
    <immutables.version>2.9.0</immutables.version>
    <jackson.version>2.13.2.20220328</jackson.version>
    <jacoco.version>0.8.8</jacoco.version>
    <javax.version>4.0.1</javax.version>
    <javax.ws.rs.version>2.1.1</javax.ws.rs.version>
    <jersey.version>2.35</jersey.version>
    <jetty.version>9.4.31.v20200723</jetty.version>
    <jjwt.version>0.11.2</jjwt.version>
    <jmh.version>1.35</jmh.version>
    <jsr305.version>3.0.2</jsr305.version>
    <junit.version>5.8.2</junit.version>
    <logback.version>1.2.11</logback.version>
    <maven.resolver.version>1.7.3</maven.resolver.version>
    <maven.version>3.8.5</maven.version>
    <mockito.version>4.5.1</mockito.version>
    <nessie.version>${project.version}</nessie.version>
    <nessie-apprunner.version>0.27.3</nessie-apprunner.version>
    <openapi.version>3.0</openapi.version>
    <picocli.version>4.6.3</picocli.version>
    <prometheus.version>0.9.0</prometheus.version>
    <protobuf.version>3.20.1</protobuf.version>
    <quarkus.version>2.9.0.Final</quarkus.version>
    <quarkus.amazon.version>2.9.0.Final</quarkus.amazon.version>
    <!-- see https://github.com/quarkiverse/quarkus-logging-sentry -->
    <quarkus.loggingsentry.version>1.1.1</quarkus.loggingsentry.version>
    <reactor.version>2020.0.19</reactor.version>
    <rocksdb.version>7.2.2</rocksdb.version>
    <scala2.12.version>2.12.13</scala2.12.version>
    <scala2.13.version>2.13.8</scala2.13.version>
    <serverless.version>1.5</serverless.version>
    <slf4j.version>1.7.36</slf4j.version>
    <spark3.jackson.version>2.13.2</spark3.jackson.version>
    <spark31.version>3.1.2</spark31.version>
    <spark32.version>3.2.1</spark32.version>
    <sqlite.version>1.0.392</sqlite.version>
    <surefire.version>3.0.0-M6</surefire.version>
    <testcontainers.version>1.17.1</testcontainers.version>
    <weld.version>3.1.8.Final</weld.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.projectnessie.cel</groupId>
        <artifactId>cel-bom</artifactId>
        <version>${cel.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.eclipse.microprofile.openapi</groupId>
        <artifactId>microprofile-openapi-api</artifactId>
        <version>${openapi.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>${protobuf.version}</version>
      </dependency>
      <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>bom</artifactId>
        <version>${awssdk.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.rocksdb</groupId>
        <artifactId>rocksdbjni</artifactId>
        <version>${rocksdb.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-common</artifactId>
        <version>${hadoop.version}</version>
        <exclusions>
          <exclusion>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>servlet-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>servlet-api-2.5</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>servlet-api-2.5</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-yarn-api</artifactId>
          </exclusion>
          <exclusion>
            <artifactId>jets3t</artifactId>
            <groupId>net.java.dev.jets3t</groupId>
          </exclusion>
          <exclusion>
            <artifactId>log4j</artifactId>
            <groupId>log4j</groupId>
          </exclusion>
          <exclusion>
            <artifactId>slf4j-log4j12</artifactId>
            <groupId>org.slf4j</groupId>
          </exclusion>
          <exclusion>
            <artifactId>mockito-all</artifactId>
            <groupId>org.mockito</groupId>
          </exclusion>
          <exclusion>
            <artifactId>commons-logging-api</artifactId>
            <groupId>commons-logging</groupId>
          </exclusion>
          <exclusion>
            <artifactId>commons-logging</artifactId>
            <groupId>commons-logging</groupId>
          </exclusion>
          <exclusion>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-core</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-server</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-json</artifactId>
          </exclusion>
          <exclusion>
            <groupId>com.sun.jersey</groupId>
            <artifactId>jersey-client</artifactId>
          </exclusion>
          <exclusion>
            <artifactId>core</artifactId>
            <groupId>org.eclipse.jdt</groupId>
          </exclusion>
          <exclusion>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-xc</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-jaxrs</artifactId>
          </exclusion>
          <exclusion>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.apache.avro</groupId>
            <artifactId>avro</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-server</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-util</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-servlet</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-webapp</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.iceberg</groupId>
        <artifactId>iceberg-nessie</artifactId>
        <version>${iceberg.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.iceberg</groupId>
        <artifactId>iceberg-spark3-runtime</artifactId>
        <version>${iceberg.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.iceberg</groupId>
        <artifactId>iceberg-spark-runtime-3.2_2.12</artifactId>
        <version>${iceberg.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>
      <dependency>
        <groupId>com.fasterxml.jackson</groupId>
        <artifactId>jackson-bom</artifactId>
        <version>${jackson.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>${javax.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>${logback.version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>${logback.version}</version>
      </dependency>
      <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-access</artifactId>
        <version>${logback.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>${jsr305.version}</version>
      </dependency>
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>${junit.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.openjdk.jmh</groupId>
        <artifactId>jmh-core</artifactId>
        <version>${jmh.version}</version>
      </dependency>
      <dependency>
        <groupId>org.openjdk.jmh</groupId>
        <artifactId>jmh-generator-annprocess</artifactId>
        <version>${jmh.version}</version>
      </dependency>
      <dependency>
        <groupId>org.immutables</groupId>
        <artifactId>value</artifactId>
        <version>${immutables.version}</version>
      </dependency>
      <dependency>
        <groupId>org.immutables</groupId>
        <artifactId>builder</artifactId>
        <version>${immutables.version}</version>
      </dependency>
      <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-bom</artifactId>
        <version>${quarkus.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- see https://github.com/quarkusio/quarkus/wiki/Migration-Guide-2.6#extensions-included-inside-the-platform-with-their-own-bom -->
      <dependency>
        <groupId>io.quarkus.platform</groupId>
        <artifactId>quarkus-amazon-services-bom</artifactId>
        <version>${quarkus.amazon.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!-- see https://github.com/quarkusio/quarkus/wiki/Migration-Guide-2.6#extensions-moved-out-of-the-quarkus-platform -->
      <dependency>
        <groupId>io.quarkiverse.loggingsentry</groupId>
        <artifactId>quarkus-logging-sentry</artifactId>
        <version>${quarkus.loggingsentry.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>log4j-over-slf4j</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
      <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-bom</artifactId>
        <version>${reactor.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>${mockito.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.12</artifactId>
        <version>${spark31.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
          <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-util</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.12</artifactId>
        <version>${spark31.version}</version>
        <exclusions>
          <exclusion>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
          </exclusion>
          <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>${assertj.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-resolver-provider</artifactId>
        <version>${maven.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-connector-basic</artifactId>
        <version>${maven.resolver.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-transport-file</artifactId>
        <version>${maven.resolver.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.maven.resolver</groupId>
        <artifactId>maven-resolver-transport-http</artifactId>
        <version>${maven.resolver.version}</version>
      </dependency>
      <dependency>
        <groupId>org.projectnessie</groupId>
        <artifactId>nessie-antlr-runtime</artifactId>
        <version>${antlr.version}</version>
      </dependency>
      <dependency>
        <groupId>org.glassfish.jersey</groupId>
        <artifactId>jersey-bom</artifactId>
        <version>${jersey.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.jboss.weld.se</groupId>
        <artifactId>weld-se-core</artifactId>
        <version>${weld.version}</version>
      </dependency>
      <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>${javax.ws.rs.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.googlejavaformat</groupId>
        <artifactId>google-java-format</artifactId>
        <version>${google-java-format.version}</version>
      </dependency>
      <dependency>
        <groupId>com.google.errorprone</groupId>
        <artifactId>error_prone_core</artifactId>
        <version>${google-error-prone.version}</version>
      </dependency>
      <dependency>
        <groupId>jp.skypencil.errorprone.slf4j</groupId>
        <artifactId>errorprone-slf4j</artifactId>
        <version>${errorprone-slf4j.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <!-- org.apache.maven plugins first -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-wrapper-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-assembly-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.2.0</version>
        </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-resources-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.10.1</version>
          <configuration>
            <!-- without this, you get NPE rather than useful messages with Maven + JDK11 -->
            <forceJavacCompilerUse>true</forceJavacCompilerUse>
            <annotationProcessorPaths>
              <path>
                <groupId>org.immutables</groupId>
                <artifactId>value</artifactId>
                <version>${immutables.version}</version>
              </path>
            </annotationProcessorPaths>
            <compilerArgs>
              <arg>-parameters</arg>
            </compilerArgs>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>3.0.0-M2</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>3.2.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-install-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.4.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.12.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${surefire.version}</version>
          <configuration>
            <argLine>@{argLine} -Dfile.encoding=UTF-8</argLine>
            <trimStackTrace>false</trimStackTrace>
            <systemProperties>
              <user.language>en</user.language>
              <user.country>US</user.country>
              <user.variant/>
            </systemProperties>
            <systemPropertyVariables>
              <test.log.level>${test.log.level}</test.log.level>
            </systemPropertyVariables>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>${surefire.version}</version>
          <configuration>
            <argLine>@{argLine} -Dfile.encoding=UTF-8</argLine>
            <trimStackTrace>false</trimStackTrace>
            <systemProperties>
              <user.language>en</user.language>
              <user.country>US</user.country>
              <user.variant/>
            </systemProperties>
            <systemPropertyVariables>
              <test.log.level>${test.log.level}</test.log.level>
            </systemPropertyVariables>
            <useModulePath>false</useModulePath>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>3.0.0-M5</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.1.2</version>
          <dependencies>
            <dependency>
              <groupId>com.puppycrawl.tools</groupId>
              <artifactId>checkstyle</artifactId>
              <version>${checkstyle.version}</version>
            </dependency>
          </dependencies>
        </plugin>
        <plugin>
          <groupId>com.diffplug.spotless</groupId>
          <artifactId>spotless-maven-plugin</artifactId>
          <version>2.22.5</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>

        <!-- Nessie plugins -->
        <plugin>
          <groupId>org.projectnessie</groupId>
          <artifactId>nessie-apprunner-maven-plugin</artifactId>
          <version>${nessie-apprunner.version}</version>
        </plugin>

        <!-- 3rd party plugins -->
        <plugin><!-- Using the junit-platform-maven-plugin as it "knows JUnit platform inside out"...
           The Maven Surefire + Failsafe plugins don't really work well with parallel +
           concurrent test execution.
           -->
          <groupId>de.sormuras.junit</groupId>
          <artifactId>junit-platform-maven-plugin</artifactId>
          <version>1.1.6</version>
          <extensions>false</extensions> <!-- Neither install this plugin into `test` phase, nor touch Surefire. -->
          <executions>
            <execution>
              <id>Launch JUnit Platform</id>
              <phase>test</phase>
              <goals>
                <goal>launch</goal>
              </goals>
              <configuration>
                <skip>${skipTests}</skip>
                <classNamePatterns>
                  <pattern>^(Test.*|.+[.$]Test.*|.*Tests?)$</pattern>
                </classNamePatterns>
                <parameters>
                  <junit.jupiter.execution.parallel.enabled>true</junit.jupiter.execution.parallel.enabled>
                </parameters>
              </configuration>
            </execution>
          </executions>
        </plugin>
        <plugin>
          <groupId>org.antlr</groupId>
          <artifactId>antlr4-maven-plugin</artifactId>
          <version>${antlr.version}</version>
          <configuration>
            <visitor>true</visitor>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.github.eirslett</groupId>
          <artifactId>frontend-maven-plugin</artifactId>
          <version>1.12.1</version>
          <configuration>
            <installDirectory>${project.build.directory}</installDirectory>
            <nodeVersion>v16.14.2</nodeVersion>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.google.code.maven-replacer-plugin</groupId>
          <artifactId>replacer</artifactId>
          <version>1.5.3</version>
        </plugin>
        <plugin>
          <groupId>com.mycila</groupId>
          <artifactId>license-maven-plugin</artifactId>
          <version>4.1</version>
        </plugin>
        <plugin>
          <groupId>net.alchim31.maven</groupId>
          <artifactId>scala-maven-plugin</artifactId>
          <version>4.6.1</version>
          <configuration>
            <scalaVersion>${scala2.12.version}</scalaVersion>
            <sendJavaToScalac>false</sendJavaToScalac>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>exec-maven-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>flatten-maven-plugin</artifactId>
          <version>1.2.7</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>tidy-maven-plugin</artifactId>
          <version>1.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.jacoco</groupId>
          <artifactId>jacoco-maven-plugin</artifactId>
          <version>${jacoco.version}</version>
        </plugin>
        <plugin>
          <groupId>org.jboss.jandex</groupId>
          <artifactId>jandex-maven-plugin</artifactId>
          <version>1.2.2</version>
        </plugin>
        <plugin>
          <groupId>io.quarkus</groupId>
          <artifactId>quarkus-maven-plugin</artifactId>
          <version>${quarkus.version}</version>
        </plugin>
        <plugin>
          <groupId>io.smallrye</groupId>
          <artifactId>smallrye-open-api-maven-plugin</artifactId>
          <version>2.1.22</version>
        </plugin>
        <plugin>
          <groupId>org.xolstice.maven.plugins</groupId>
          <artifactId>protobuf-maven-plugin</artifactId>
          <version>0.6.1</version>
          <configuration>
            <protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}</protocArtifact>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.bazaarvoice.maven.plugins</groupId>
          <artifactId>process-exec-maven-plugin</artifactId>
          <version>0.9</version>
        </plugin>
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>build-helper-maven-plugin</artifactId>
          <version>3.3.0</version>
        </plugin>
        <plugin>
          <groupId>org.owasp</groupId>
          <artifactId>dependency-check-maven</artifactId>
          <version>7.1.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>tidy-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>validate-pom</id>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <id>default-testJar</id>
            <goals>
              <goal>test-jar</goal>
            </goals>
            <configuration>
              <skipIfEmpty>true</skipIfEmpty>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <configuration>
          <!-- Specify source and test directories to not included generated source directories -->
          <sourceDirectories>
            <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
          </sourceDirectories>
          <testSourceDirectories>
            <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
          </testSourceDirectories>
          <encoding>UTF-8</encoding>
          <failsOnError>true</failsOnError>
          <failOnViolation>true</failOnViolation>
          <violationSeverity>warning</violationSeverity>
          <consoleOutput>true</consoleOutput>
          <includeResources>true</includeResources>
          <includeTestResources>true</includeTestResources>
          <resourceIncludes>**/*.properties,**/*.conf,**/*.json,**/*.xml</resourceIncludes>
          <includeTestSourceDirectory>true</includeTestSourceDirectory>
          <configLocation>codestyle/checkstyle-config.xml</configLocation>
          <skip>${skipCheckstyle}</skip>
        </configuration>
        <executions>
          <execution>
            <id>checkstyle-verification</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>com.mycila</groupId>
        <artifactId>license-maven-plugin</artifactId>
        <configuration>
          <skip>${skipLicense}</skip>
          <inlineHeader>
Copyright (C) ${project.inceptionYear} ${owner}

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.
          </inlineHeader>
          <properties>
            <owner>Dremio</owner>
            <project.inceptionYear>2020</project.inceptionYear>
          </properties>
          <project>
            <inceptionYear>2020</inceptionYear>
          </project>
          <failIfUnknown>true</failIfUnknown>
          <useDefaultExcludes>false</useDefaultExcludes>

          <includes>
            <include>src/**</include>
            <include>*</include>
          </includes>
          <excludes>
            <exclude>**/.mvn/**</exclude>
            <exclude>mvnw</exclude>
            <exclude>mvnw.cmd</exclude>
            <exclude>**/*.java</exclude>
            <exclude>**/*.scala</exclude>
            <!-- default excludes (minus some items) from https://github.com/mycila/license-maven-plugin/blob/61f65ac65bfc38246a15fb84083796c5e3afb053/license-maven-plugin/src/main/java/com/mycila/maven/plugin/license/Default.java -->
            <exclude>**/*~</exclude>
            <exclude>**/000000_0</exclude>
            <exclude>**/#*#</exclude>
            <exclude>**/.#*</exclude>
            <exclude>**/%*%</exclude>
            <exclude>**/._*</exclude>
            <exclude>**/.repository/**</exclude>
            <exclude>**/CVS</exclude>
            <exclude>**/CVS/**</exclude>
            <exclude>**/.cvsignore</exclude>
            <exclude>**/RCS</exclude>
            <exclude>**/RCS/**</exclude>
            <exclude>**/SCCS</exclude>
            <exclude>**/SCCS/**</exclude>
            <exclude>**/vssver.scc</exclude>
            <exclude>**/.svn</exclude>
            <exclude>**/.svn/**</exclude>
            <exclude>**/.arch-ids</exclude>
            <exclude>**/.arch-ids/**</exclude>
            <exclude>**/.bzr</exclude>
            <exclude>**/.bzr/**</exclude>
            <exclude>**/.MySCMServerInfo</exclude>
            <exclude>**/.DS_Store</exclude>
            <exclude>**/.metadata</exclude>
            <exclude>**/.metadata/**</exclude>
            <exclude>**/.hg</exclude>
            <exclude>**/.hg/**</exclude>
            <exclude>**/.hgignore</exclude>
            <exclude>**/.git</exclude>
            <exclude>**/.git/**</exclude>
            <exclude>**/.gitignore</exclude>
            <exclude>**/.gitmodules</exclude>
            <exclude>**/BitKeeper</exclude>
            <exclude>**/BitKeeper/**</exclude>
            <exclude>**/ChangeSet</exclude>
            <exclude>**/ChangeSet/**</exclude>
            <exclude>**/_darcs</exclude>
            <exclude>**/_darcs/**</exclude>
            <exclude>**/.darcsrepo</exclude>
            <exclude>**/.darcsrepo/**</exclude>
            <exclude>**/-darcs-backup*</exclude>
            <exclude>**/.darcs-temp-mail</exclude>
            <!-- <exclude>**/target/**</exclude> want this for add-license-for-java-generated-from-proto -->
            <exclude>**/test-output/**</exclude>
            <exclude>**/release.properties</exclude>
            <exclude>**/dependency-reduced-pom.xml</exclude>
            <exclude>**/release-pom.xml</exclude>
            <exclude>**/pom.xml.releaseBackup</exclude>
            <exclude>**/cobertura.ser</exclude>
            <exclude>**/.clover/**</exclude>
            <exclude>**/.classpath</exclude>
            <exclude>**/.factorypath</exclude>
            <exclude>**/.project</exclude>
            <exclude>**/.settings/**</exclude>
            <exclude>**/*.iml</exclude>
            <exclude>**/*.ipr</exclude>
            <exclude>**/*.iws</exclude>
            <exclude>.idea/**</exclude>
            <exclude>**/nb-configuration.xml</exclude>
            <exclude>**/MANIFEST.MF</exclude>
            <exclude>**/*.jpg</exclude>
            <exclude>**/*.png</exclude>
            <exclude>**/*.gif</exclude>
            <exclude>**/*.ico</exclude>
            <exclude>**/*.bmp</exclude>
            <exclude>**/*.tiff</exclude>
            <exclude>**/*.tif</exclude>
            <exclude>**/*.cr2</exclude>
            <exclude>**/*.xcf</exclude>
            <exclude>**/*.class</exclude>
            <exclude>**/*.exe</exclude>
            <exclude>**/*.dll</exclude>
            <exclude>**/*.so</exclude>
            <exclude>**/*.md5</exclude>
            <exclude>**/*.sha1</exclude>
            <exclude>**/*.jar</exclude>
            <exclude>**/*.zip</exclude>
            <exclude>**/*.rar</exclude>
            <exclude>**/*.tar</exclude>
            <exclude>**/*.tar.gz</exclude>
            <exclude>**/*.tar.bz2</exclude>
            <exclude>**/*.gz</exclude>
            <exclude>**/*.xls</exclude>
            <exclude>**/META-INF/services/**</exclude>
            <exclude>**/META-INF/gradle-plugins/**</exclude>
            <exclude>**/*.md</exclude>
            <exclude>**/*.xls</exclude>
            <exclude>**/*.doc</exclude>
            <exclude>**/*.odt</exclude>
            <exclude>**/*.ods</exclude>
            <exclude>**/*.pdf</exclude>
            <exclude>**/.travis.yml</exclude>
            <exclude>**/*.swf</exclude>
            <exclude>**/*.json</exclude>
            <!-- <exclude>**/*.svg</exclude> -->
            <exclude>**/*.eot</exclude>
            <exclude>**/*.ttf</exclude>
            <exclude>**/*.woff</exclude>
            <exclude>**/*.xlsx</exclude>
            <exclude>**/*.docx</exclude>
            <exclude>**/*.ppt</exclude>
            <exclude>**/*.pptx</exclude>
            <exclude>**/*.patch</exclude>
            <!-- end default excludes -->

            <!-- by file extension -->
            <exclude>**/*.log</exclude>
            <exclude>**/*.txt</exclude>
            <exclude>**/*.csv</exclude>
            <exclude>**/*.tsv</exclude>
            <exclude>**/*.parquet</exclude>
            <exclude>**/*.jks</exclude>
            <exclude>**/*.nonformat</exclude>
            <exclude>**/*.gzip</exclude>
            <exclude>**/*.k</exclude>
            <exclude>**/*.q</exclude>
            <exclude>**/*.dat</exclude>
            <exclude>**/*.pem</exclude>

            <!-- by file name -->
            <exclude>**/Jenkinsfile</exclude>
            <exclude>**/LICENSE</exclude>
            <exclude>**/NOTICE</exclude>
            <exclude>**/postinstall</exclude>
            <exclude>**/.babelrc</exclude>
            <exclude>**/.checkstyle</exclude>
            <exclude>**/.eslintcache</exclude>
            <exclude>**/.eslintignore</exclude>
            <exclude>**/.eslintrc</exclude>
            <exclude>**/git.properties</exclude>
            <exclude>**/pom.xml.versionsBackup</exclude>
            <exclude>**/q</exclude>
            <exclude>**/c.java</exclude>
            <exclude>**/swagger-ui/**</exclude>
            <exclude>**/gradlew</exclude>
            <exclude>**/tsconfig.tsbuildinfo</exclude>

            <!-- by directory name -->
            <exclude>**/node_modules/**</exclude>
            <exclude>**/.idea/**</exclude>
            <exclude>**/db/**</exclude>
            <exclude>**/*.ipynb</exclude>
          </excludes>
          <mapping>
            <DataSourceRegister>SCRIPT_STYLE</DataSourceRegister>
            <properties>SCRIPT_STYLE</properties>
            <java>SLASHSTAR_STYLE</java>
            <hql>DOUBLEDASHES_STYLE</hql>
            <jnk>DOUBLESLASH_STYLE</jnk>
            <stg>DOUBLESLASH_STYLE</stg>
            <g>DOUBLESLASH_STYLE</g>
            <proto>SLASHSTAR_STYLE</proto>
            <less>SLASHSTAR_STYLE</less>
            <hpp>SLASHSTAR_STYLE</hpp>
            <cc>SLASHSTAR_STYLE</cc>
            <tdd>SCRIPT_STYLE</tdd>
            <command>SCRIPT_STYLE</command>
            <fmpp>SCRIPT_STYLE</fmpp>
            <q>DOUBLEDASHES_STYLE</q>
            <conf>SCRIPT_STYLE</conf>
            <jj>SLASHSTAR_STYLE</jj>
            <dss>SCRIPT_STYLE</dss>
            <rc>SCRIPT_STYLE</rc>
            <service>SCRIPT_STYLE</service>
            <svg>XML_STYLE</svg>
            <mvnw>SCRIPT_STYLE</mvnw>
            <jsx>SLASHSTAR_STYLE</jsx>
            <tsx>SLASHSTAR_STYLE</tsx>
            <ts>SLASHSTAR_STYLE</ts>
            <jmx>XML_STYLE</jmx>
            <g4>SLASHSTAR_STYLE</g4>
          </mapping>
        </configuration>
        <executions>
          <execution>
            <id>default-cli</id>
            <goals>
              <goal>format</goal>
            </goals>
          </execution>
          <execution>
            <id>verify-license-headers</id>
            <phase>verify</phase>
            <goals>
              <goal>check</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-enforcer-plugin</artifactId>
        <dependencies>
          <dependency>
            <groupId>de.skuzzle.enforcer</groupId>
            <artifactId>restrict-imports-enforcer-rule</artifactId>
            <version>2.0.0</version>
          </dependency>
        </dependencies>
        <executions>
          <execution>
            <id>avoid-bad-dependencies</id>
            <phase>verify</phase>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <skip>${skipEnforcer}</skip>
              <rules>
                <bannedDependencies>
                  <excludes>
                    <exclude>commons-logging</exclude>
                    <exclude>javax.servlet:servlet-api</exclude>
                    <exclude>org.mortbay.jetty:servlet-api</exclude>
                    <exclude>org.mortbay.jetty:servlet-api-2.5</exclude>
                    <exclude>log4j:log4j</exclude>
                  </excludes>
                </bannedDependencies>
                <RestrictImports>
                  <reason>Use javax annotations instead of jetbrains</reason>
                  <bannedImport>org.jetbrains.annotations.**</bannedImport>
                </RestrictImports>
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>enforce-project-rules</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <banDuplicatePomDependencyVersions />
                <requireJavaVersion>
                  <version>11</version>
                </requireJavaVersion>
                <requireMavenVersion>
                  <version>[3.6.2,)</version>
                </requireMavenVersion>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.jboss.jandex</groupId>
        <artifactId>jandex-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>make-index</id>
            <goals>
              <goal>jandex</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>io.gatling</groupId>
        <artifactId>gatling-maven-plugin</artifactId>
        <version>${gatling.maven.version}</version>
      </plugin>
    </plugins>
    <extensions>
      <extension>
        <groupId>kr.motd.maven</groupId>
        <artifactId>os-maven-plugin</artifactId>
        <version>1.7.0</version>
      </extension>
    </extensions>
  </build>

  <profiles>
    <profile>
      <id>code-coverage</id>
      <modules>
        <module>code-coverage</module>
      </modules>
      <build>
        <plugins>
          <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>default-prepare-agent</id>
                <goals>
                  <goal>prepare-agent</goal>
                </goals>
              </execution>
              <execution>
                <id>default-prepare-agent-integration</id>
                <goals>
                  <goal>prepare-agent-integration</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <!--
           Do not activate errorprone while running with Eclipse/M2E as it causes incompatibilities
           with other annotation processors.
           See https://github.com/jbosstools/m2e-apt/issues/62 for details
      -->
      <id>error-prone</id>
      <activation>
        <property>
           <name>!m2e.version</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
              <compilerArgs combine.children="append">
                <arg>-XDcompilePolicy=simple</arg>
                <!-- Turning off Unicode check as it gives invalid errors in ErrorProne 2.11.0 -->
                <!-- It's usually fine for Nessie's use case to use static final loggers  -->
                <arg>-Xplugin:ErrorProne -Xep:UnicodeInCode:OFF -Xep:Slf4jLoggerShouldBeNonStatic:OFF -XepExcludedPaths:.*/target/generated-(test-)?sources/.*</arg>
              </compilerArgs>
              <showWarnings>true</showWarnings>
              <annotationProcessorPaths combine.children="append">
                <path>
                  <groupId>com.google.errorprone</groupId>
                  <artifactId>error_prone_core</artifactId>
                  <version>${google-error-prone.version}</version>
                </path>
                <path>
                  <groupId>jp.skypencil.errorprone.slf4j</groupId>
                  <artifactId>errorprone-slf4j</artifactId>
                  <version>${errorprone-slf4j.version}</version>
                </path>
              </annotationProcessorPaths>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>release</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <executions>
              <execution>
                <id>default-sourcesJar</id>
                <goals>
                  <goal>jar-no-fork</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>scala-maven-plugin</artifactId>
            <executions>
              <execution>
                <id>attach-javadocs</id>
                <goals>
                  <goal>doc-jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <executions>
              <execution>
                <id>default-javadocJar</id>
                <goals>
                  <goal>jar</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <configuration>
              <!-- Workaround for https://github.com/projectnessie/nessie/issues/3678 -->
              <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <executions>
              <execution>
                <id>default-sign</id>
                <goals>
                  <goal>sign</goal>
                </goals>
                <configuration>
                  <skip>${skipGpg}</skip>
                  <gpgArguments>
                    <arg>--pinentry-mode</arg>
                    <arg>loopback</arg>
                  </gpgArguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
      <profile>
        <id>owasp-dependency-check</id>
        <build>
          <plugins>
            <plugin>
              <groupId>org.owasp</groupId>
              <artifactId>dependency-check-maven</artifactId>
              <configuration>
                <format>HTML</format>
                <skipProvidedScope>true</skipProvidedScope>
                <assemblyAnalyzerEnabled>false</assemblyAnalyzerEnabled>
                <msbuildAnalyzerEnabled>false</msbuildAnalyzerEnabled>
              </configuration>
              <executions>
                <execution>
                  <goals>
                    <goal>aggregate</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </build>
      </profile>
    <profile>
      <id>spotless</id>
      <activation>
        <property>
          <name>!skipSpotless</name>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>com.diffplug.spotless</groupId>
            <artifactId>spotless-maven-plugin</artifactId>
            <configuration>
              <formats>
                <format>
                  <includes>
                    <include>.gitignore</include>
                  </includes>
                  <trimTrailingWhitespace/>
                  <endWithNewline/>
                  <indent>
                    <spaces>true</spaces>
                    <spacesPerTab>2</spacesPerTab>
                  </indent>
                </format>
                <format>
                  <includes>
                    <include>src/**/*.xml</include>
                    <include>src/**/*.xsd</include>
                  </includes>
                  <excludes>
                    <exclude>**/.idea/**</exclude>
                    <exclude>codestyle/**</exclude>
                    <exclude>site/**</exclude>
                    <exclude>**/pom.xml</exclude>
                    <exclude>**/.flattened-pom.xml</exclude>
                    <exclude>**/.tox/**</exclude>
                    <exclude>**/target/**</exclude>
                    <exclude>**/build/**</exclude>
                    <exclude>**/node_modules/**</exclude>
                    <exclude>**/venv/**</exclude>
                  </excludes>
                  <eclipseWtp>
                    <type>XML</type>
                    <files>
                      <file>${maven.multiModuleProjectDirectory}/codestyle/org.eclipse.wst.xml.core.prefs</file>
                    </files>
                  </eclipseWtp>
                </format>
              </formats>
              <java>
                <google-java-format>
                  <version>${google-java-format.version}</version>
                </google-java-format>
                <licenseHeader>
                  <file>${maven.multiModuleProjectDirectory}/codestyle/copyright-header-java.txt</file>
                  <delimiter>(package|import) </delimiter>
                </licenseHeader>
              </java>
              <scala>
                <scalafmt/>
                <licenseHeader>
                  <file>${maven.multiModuleProjectDirectory}/codestyle/copyright-header-java.txt</file>
                  <delimiter>(package|import) </delimiter>
                </licenseHeader>
              </scala>
            </configuration>
            <executions>
              <execution>
                <id>spotless-check</id>
                <phase>verify</phase>
                <goals>
                  <goal>check</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>all-properties</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>properties-maven-plugin</artifactId>
            <version>1.1.0</version>
            <executions>
              <execution>
                <id>default-cli</id>
                <phase>initialize</phase>
                <configuration>
                  <outputFile>
                    ${project.build.directory}/project.properties
                  </outputFile>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>build-all</id>
      <activation>
        <property>
          <name>!quickly</name>
        </property>
      </activation>
      <modules>
        <module>perftest</module>
        <module>ui</module>
        <module>gc</module>
      </modules>
    </profile>
    <profile>
      <id>build-quickly</id>
      <activation>
        <property>
          <name>quickly</name>
        </property>
      </activation>
      <properties>
        <skipTests>true</skipTests>
        <skipITs>true</skipITs>
        <skipLicense>true</skipLicense>
        <skipEnforcer>true</skipEnforcer>
        <skipCheckstyle>true</skipCheckstyle>
      </properties>
      <build>
        <defaultGoal>clean install</defaultGoal>
      </build>
    </profile>
    <profile>
      <id>skipOnSkipTests</id>
      <activation>
        <property>
          <name>skipTests</name>
          <value>true</value>
        </property>
      </activation>
      <properties>
        <skipITs>true</skipITs>
      </properties>
    </profile>
  </profiles>
</project>
