<?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.2.1</version>
  <packaging>pom</packaging>

  <name>Nessie</name>
  <description>Data Ops 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>
  </developers>
  <contributors>
    <contributor>
      <name>Ryan Tse</name>
      <url>https://github.com/ryantse</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>model</module>
    <module>backends</module>
    <module>clients</module>
    <module>ui</module>
    <module>versioned</module>
    <module>perftest</module>
    <module>servers</module>
    <module>tools</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/tree/${project.scm.tag}</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 />

    <!-- 3rd party repositories -->
    <dynamodb-local.repository.url>https://s3.eu-central-1.amazonaws.com/dynamodb-local-frankfurt/release</dynamodb-local.repository.url>
    <!--<dynamodb-local.repository.url>https://s3.us-west-2.amazonaws.com/dynamodb-local/release</dynamodb-local.repository.url>-->

    <!-- Version properties -->
    <awssdk.version>2.15.18</awssdk.version>
    <bouncycastle.version>1.66</bouncycastle.version>
    <deltalake2.version>0.6.2-nessie</deltalake2.version>
    <deltalake3.version>0.8.0-nessie</deltalake3.version>
    <microprofile-metrics.version>2.3.2</microprofile-metrics.version>
    <dynamodb.version>1.12.0</dynamodb.version>
    <errorprone.javac.version>9+181-r4173-1</errorprone.javac.version>
    <guava.version>29.0-jre</guava.version>
    <hadoop.version>3.3.0</hadoop.version>
    <hamcrest.version>2.2</hamcrest.version>
    <iceberg.version>0.9.1</iceberg.version>
    <immutables.version>2.8.8</immutables.version>
    <jackson.version>2.11.3</jackson.version>
    <javax.version>4.0.1</javax.version>
    <jaeger.version>1.3.2</jaeger.version>
    <jersey.version>2.31</jersey.version>
    <jetty.version>9.4.31.v20200723</jetty.version>
    <jjwt.version>0.11.2</jjwt.version>
    <jgit.version>5.9.0.202009080501-r</jgit.version>
    <jmeter.version>5.3</jmeter.version>
    <junit.version>5.7.0</junit.version>
    <logback.version>1.2.3</logback.version>
    <protobuf.version>3.13.0</protobuf.version>
    <prometheus.version>0.9.0</prometheus.version>
    <serverless.version>1.5</serverless.version>
    <surefire.version>3.0.0-M5</surefire.version>
    <slf4j.version>1.7.30</slf4j.version>
    <spark2.version>2.4.2</spark2.version>
    <spark2.jersey.version>2.22.2</spark2.jersey.version>
    <spark2.jackson.version>2.8.8</spark2.jackson.version>
    <spark3.version>3.0.1</spark3.version>
    <spark3.jersey.version>2.30</spark3.jersey.version>
    <spark3.jackson.version>2.10.2</spark3.jackson.version>
    <sqlite.version>1.0.392</sqlite.version>
    <quarkus.version>1.9.1.Final</quarkus.version>
    <openapi.version>1.1.2</openapi.version>
    <jsr305.version>3.0.2</jsr305.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <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>org.eclipse.jgit</groupId>
        <artifactId>org.eclipse.jgit</artifactId>
        <version>${jgit.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>software.amazon.awssdk</groupId>
        <artifactId>dynamodb-enhanced</artifactId>
        <version>${awssdk.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>DynamoDBLocal</artifactId>
        <version>${dynamodb.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.eclipse.microprofile.metrics</groupId>
        <artifactId>microprofile-metrics-api</artifactId>
        <version>${microprofile-metrics.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-core</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>com.almworks.sqlite4java</groupId>
        <artifactId>libsqlite4java-linux-i386</artifactId>
        <version>${sqlite.version}</version>
        <type>so</type>
      </dependency>
      <dependency>
        <groupId>com.almworks.sqlite4java</groupId>
        <artifactId>libsqlite4java-linux-amd64</artifactId>
        <version>${sqlite.version}</version>
        <type>so</type>
      </dependency>
      <dependency>
        <groupId>com.almworks.sqlite4java</groupId>
        <artifactId>sqlite4java-win32-x64</artifactId>
        <version>${sqlite.version}</version>
        <type>dll</type>
      </dependency>
      <dependency>
        <groupId>com.almworks.sqlite4java</groupId>
        <artifactId>sqlite4java-win32-x86</artifactId>
        <version>${sqlite.version}</version>
        <type>dll</type>
      </dependency>
      <dependency>
        <groupId>com.almworks.sqlite4java</groupId>
        <artifactId>libsqlite4java-osx</artifactId>
        <version>${sqlite.version}</version>
        <type>dylib</type>
      </dependency>
      <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>${junit.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>org.immutables</groupId>
        <artifactId>value</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>
      <dependency>
        <groupId>org.apache.jmeter</groupId>
        <artifactId>ApacheJMeter_core</artifactId>
        <version>${jmeter.version}</version>
        <exclusions>
          <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <dependency>
        <groupId>org.apache.jmeter</groupId>
        <artifactId>ApacheJMeter_java</artifactId>
        <version>${jmeter.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.iceberg</groupId>
        <artifactId>iceberg-spark-runtime</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.hamcrest</groupId>
        <artifactId>hamcrest</artifactId>
        <version>${hamcrest.version}</version>
      </dependency>
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>log4j-over-slf4j</artifactId>
        <version>${slf4j.version}</version>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <pluginManagement>
      <plugins>
        <!-- org.apache.maven plugins first -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.1.2</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.8.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>2.8.2</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-M1</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-M3</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>${surefire.version}</version>
          <configuration>
            <argLine>@{argLine}</argLine>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>${surefire.version}</version>
          <configuration>
            <argLine>@{argLine}</argLine>
            <useModulePath>false</useModulePath>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-release-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-checkstyle-plugin</artifactId>
          <version>3.1.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>3.2.4</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-plugin-plugin</artifactId>
          <version>3.6.0</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <version>1.6</version>
        </plugin>

        <!-- 3rd party plugins -->
        <plugin>
          <groupId>com.github.eirslett</groupId>
          <artifactId>frontend-maven-plugin</artifactId>
          <version>1.10.3</version>
          <configuration>
            <installDirectory>${project.build.directory}</installDirectory>
            <nodeVersion>v12.16.2</nodeVersion>
          </configuration>
        </plugin>
        <plugin>
          <groupId>com.google.cloud.tools</groupId>
          <artifactId>jib-maven-plugin</artifactId>
          <version>2.6.0</version>
        </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>3.0</version>
        </plugin>
        <plugin>
          <groupId>kr.motd.maven</groupId>
          <artifactId>os-maven-plugin</artifactId>
          <version>1.6.2</version>
        </plugin>
        <plugin>
          <groupId>net.alchim31.maven</groupId>
          <artifactId>scala-maven-plugin</artifactId>
          <version>4.4.0</version>
        </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.5</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>0.8.6</version>
        </plugin>
        <plugin>
          <groupId>org.jboss.jandex</groupId>
          <artifactId>jandex-maven-plugin</artifactId>
          <version>1.0.8</version>
        </plugin>
        <plugin>
          <groupId>io.quarkus</groupId>
          <artifactId>quarkus-maven-plugin</artifactId>
          <version>${quarkus.version}</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>kr.motd.maven</groupId>
        <artifactId>os-maven-plugin</artifactId>
        <executions>
          <execution>
            <phase>initialize</phase>
            <goals>
              <goal>detect</goal>
            </goals>
          </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>checkstyle/checkstyle-config.xml</configLocation>
        </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>
          <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>
            <include>**/.mvn/**</include>
          </includes>
          <excludes>
            <!-- 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>

            <!-- 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>
            <jmx>XML_STYLE</jmx>
          </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>
        <executions>
          <execution>
            <id>avoid-bad-dependencies</id>
            <phase>verify</phase>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <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>
              </rules>
            </configuration>
          </execution>
          <execution>
            <id>enforce-project-rules</id>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <banDuplicatePomDependencyVersions />
                <requireJavaVersion>
                  <version>11</version>
                </requireJavaVersion>
              </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>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>code-coverage</id>
      <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>
              <execution>
                <id>default-report</id>
                <goals>
                  <goal>report</goal>
                </goals>
              </execution>
              <execution>
                <id>default-report-integration</id>
                <goals>
                  <goal>report-integration</goal>
                </goals>
              </execution>
              <execution>
                <id>default-aggregate-report</id>
                <phase>verify</phase>
                <goals>
                  <goal>report-aggregate</goal>
                </goals>
                <configuration>
                  <dataFileIncludes>
                    <dataFileInclude>**/jacoco.exec</dataFileInclude>
                  </dataFileIncludes>
                  <outputDirectory>${project.reporting.outputDirectory}/jacoco-aggregate</outputDirectory>
                </configuration>
              </execution>
              <execution>
                <id>default-aggregate-report-integration</id>
                <phase>verify</phase>
                <goals>
                  <goal>report-aggregate</goal>
                </goals>
                <configuration>
                  <dataFileIncludes>
                    <dataFileInclude>**/jacoco-it.exec</dataFileInclude>
                  </dataFileIncludes>
                  <outputDirectory>${project.reporting.outputDirectory}/jacoco-aggregate-it</outputDirectory>
                </configuration>
              </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>
                <arg>-Xplugin:ErrorProne</arg>
              </compilerArgs>
              <annotationProcessorPaths combine.children="append">
                <path>
                  <groupId>com.google.errorprone</groupId>
                  <artifactId>error_prone_core</artifactId>
                  <version>2.4.0</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>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-gpg-plugin</artifactId>
            <executions>
              <execution>
                <id>default-sign</id>
                <goals>
                  <goal>sign</goal>
                </goals>
                <configuration>
                  <gpgArguments>
                    <arg>--pinentry-mode</arg>
                    <arg>loopback</arg>
                  </gpgArguments>
                </configuration>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
