airbase
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.airlift</groupId>
<artifactId>airbase</artifactId>
<version>350</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<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>io.airlift</groupId>
<artifactId>airbase</artifactId>
<version>350</version>
<packaging>pom</packaging>
<name>airbase</name>
<description>Base POM for Airlift</description>
<url>https://github.com/airlift/airbase</url>
<inceptionYear>2013</inceptionYear>
<licenses>
<license>
<name>Apache License 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0</url>
<distribution>repo</distribution>
</license>
</licenses>
<developers>
<!-- see git log -->
<developer>
<name>Airlift</name>
</developer>
</developers>
<scm>
<connection>scm:git:git@github.com/airlift/airbase.git</connection>
<developerConnection>scm:git:git@github.com:airlift/airbase.git</developerConnection>
<tag>350</tag>
<url>https://github.com/airlift/airbase</url>
</scm>
<distributionManagement>
<repository>
<id>${air.repository.release.id}</id>
<name>${air.repository.release.name}</name>
<url>${air.repository.release.url}</url>
</repository>
<snapshotRepository>
<id>${air.repository.snapshot.id}</id>
<name>${air.repository.snapshot.name}</name>
<url>${air.repository.snapshot.url}</url>
</snapshotRepository>
</distributionManagement>
<properties>
<!-- see http://docs.codehaus.org/display/MAVENUSER/POM+Element+for+Source+File+Encoding -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.targetJdk>8</project.build.targetJdk>
<project.report.outputEncoding>UTF-8</project.report.outputEncoding>
<project.report.inputEncoding>UTF-8</project.report.inputEncoding>
<project.build.outputTimestamp>2026-02-05T10:26:25Z</project.build.outputTimestamp>
<!-- airlift build specific options are prefixed air.build. -->
<!-- Default jvm size for compiler, tests etc. -->
<air.build.jvmsize>1024m</air.build.jvmsize>
<!-- whether a release:perform automatically pushes the created files and tags to -->
<!-- the upstream repository. Default is no. -->
<air.release.push-changes>false</air.release.push-changes>
<air.release.auto-version-submodules>true</air.release.auto-version-submodules>
<air.release.release-profiles>oss-release</air.release.release-profiles>
<air.release.preparation-goals>clean install</air.release.preparation-goals>
<air.release.tag-name-format>@{project.version}</air.release.tag-name-format>
<!-- define the thread count for parallel tests. -->
<air.test.thread-count>1</air.test.thread-count>
<!-- define the parallel mode for tests. -->
<!-- Check https://testng.org/doc/documentation-main.html#parallel-running for the possible values of this setting. -->
<!-- At the time of this writing, the supported values for parallelism in testng for maven-surefire-plugin are: classes, methods. -->
<air.test.parallel />
<!-- define the JVM timezone to use when running tests. Default is 'UTC. -->
<air.test.timezone>UTC</air.test.timezone>
<!-- define the JVM language to use when running tests. Default is 'en'. -->
<air.test.language>en</air.test.language>
<!-- define the JVM region to use when running tests. Default is 'US'. -->
<air.test.region>US</air.test.region>
<!-- define the JVM size for forked tests. Defaults to build JVM size. -->
<air.test.jvmsize>${air.build.jvmsize}</air.test.jvmsize>
<!-- provide additional options for test JVM -->
<air.test.jvm.additional-arguments />
<!-- Lint mode for Javadoc. Defaults to 'all'. -->
<air.javadoc.lint>all</air.javadoc.lint>
<!-- Target Java version for Modernizer -->
<air.modernizer.java-version>${project.build.targetJdk}</air.modernizer.java-version>
<!-- Run compiler in a separate process -->
<air.compiler.fork>false</air.compiler.fork>
<!-- compiler warnings treated as errors -->
<air.compiler.fail-warnings>false</air.compiler.fail-warnings>
<!-- enable compiler preview language features -->
<air.compiler.enable-preview>false</air.compiler.enable-preview>
<!-- Controls all the checkers run when building the project. -->
<!-- Can be activated with -Dair.check.skip-all=true on the command line. -->
<air.check.skip-all>false</air.check.skip-all>
<!-- Controls the basic checkers run when building the project. -->
<air.check.skip-basic>${air.check.skip-all}</air.check.skip-basic>
<!-- Controls the extended checkers run when building the project. -->
<air.check.skip-extended>${air.check.skip-all}</air.check.skip-extended>
<!-- basic checks -->
<air.check.skip-enforcer>${air.check.skip-basic}</air.check.skip-enforcer>
<air.check.skip-dependency>${air.check.skip-basic}</air.check.skip-dependency>
<air.check.skip-duplicate-finder>${air.check.skip-basic}</air.check.skip-duplicate-finder>
<air.check.skip-dependency-scope>${air.check.skip-basic}</air.check.skip-dependency-scope>
<!-- extended checks -->
<air.check.skip-spotbugs>${air.check.skip-extended}</air.check.skip-spotbugs>
<air.check.skip-pmd>${air.check.skip-extended}</air.check.skip-pmd>
<air.check.skip-license>${air.check.skip-extended}</air.check.skip-license>
<air.check.skip-jacoco>${air.check.skip-extended}</air.check.skip-jacoco>
<air.check.skip-modernizer>${air.check.skip-extended}</air.check.skip-modernizer>
<air.check.skip-checkstyle>${air.check.skip-extended}</air.check.skip-checkstyle>
<!-- all checks -->
<air.check.fail-all>true</air.check.fail-all>
<air.check.fail-basic>${air.check.fail-all}</air.check.fail-basic>
<air.check.fail-extended>${air.check.fail-all}</air.check.fail-extended>
<!-- basic checks -->
<air.check.fail-enforcer>${air.check.fail-basic}</air.check.fail-enforcer>
<air.check.fail-dependency>${air.check.fail-basic}</air.check.fail-dependency>
<air.check.fail-duplicate-finder>${air.check.fail-basic}</air.check.fail-duplicate-finder>
<air.check.fail-dependency-scope>${air.check.fail-basic}</air.check.fail-dependency-scope>
<!-- extended checks -->
<air.check.fail-spotbugs>${air.check.fail-extended}</air.check.fail-spotbugs>
<air.check.fail-pmd>${air.check.fail-extended}</air.check.fail-pmd>
<air.check.fail-license>${air.check.fail-extended}</air.check.fail-license>
<air.check.fail-modernizer>${air.check.fail-extended}</air.check.fail-modernizer>
<air.check.fail-checkstyle>${air.check.fail-basic}</air.check.fail-checkstyle>
<!-- minimum maven version to build -->
<air.maven.version>3.9.8</air.maven.version>
<!-- minimum Java version to build -->
<air.java.version>17</air.java.version>
<!-- In Multimodule builds, override this to point at the parent directory for e.g. the license resources. -->
<!-- See http://stackoverflow.com/questions/1012402/maven2-property-that-indicates-the-parent-directory -->
<air.main.basedir>${project.basedir}</air.main.basedir>
<!-- ${argLine} is used by Jacoco to store commands to enable its agent, and then used in Surefire configuration.
When Jacoco is not enabled, it will stay empty, otherwise it will be overwritten. -->
<argLine />
<!-- Plugin versions, keep sorted -->
<dep.plugin.assembly.version>3.8.0</dep.plugin.assembly.version>
<dep.plugin.build-helper.version>3.6.1</dep.plugin.build-helper.version>
<dep.plugin.checkstyle.version>3.6.0</dep.plugin.checkstyle.version>
<dep.plugin.clean.version>3.5.0</dep.plugin.clean.version>
<dep.plugin.commit-id.version>9.0.2</dep.plugin.commit-id.version>
<dep.plugin.compiler.version>3.15.0</dep.plugin.compiler.version>
<dep.plugin.dependency.version>3.9.0</dep.plugin.dependency.version>
<dep.plugin.dependency-scope.version>1.0.3</dep.plugin.dependency-scope.version>
<dep.plugin.deploy.version>3.1.4</dep.plugin.deploy.version>
<dep.plugin.duplicate-finder.version>2.0.1</dep.plugin.duplicate-finder.version>
<dep.plugin.enforcer.version>3.6.2</dep.plugin.enforcer.version>
<dep.plugin.enforcer-extra.version>1.11.0</dep.plugin.enforcer-extra.version>
<dep.plugin.gpg.version>3.2.8</dep.plugin.gpg.version>
<dep.plugin.install.version>3.1.4</dep.plugin.install.version>
<dep.plugin.jacoco.version>0.8.14</dep.plugin.jacoco.version>
<dep.plugin.jar.version>3.5.0</dep.plugin.jar.version>
<dep.plugin.javadoc.version>3.12.0</dep.plugin.javadoc.version>
<dep.plugin.license.version>5.0.0</dep.plugin.license.version>
<dep.plugin.modernizer.version>3.2.0</dep.plugin.modernizer.version>
<dep.plugin.njord.version>0.9.3</dep.plugin.njord.version>
<dep.plugin.pmd-runtime.version>7.21.0</dep.plugin.pmd-runtime.version>
<dep.plugin.pmd.version>3.28.0</dep.plugin.pmd.version>
<dep.plugin.release.version>3.3.1</dep.plugin.release.version>
<dep.plugin.resources.version>3.4.0</dep.plugin.resources.version>
<dep.plugin.restrict-imports.version>3.0.0</dep.plugin.restrict-imports.version>
<dep.plugin.scm.version>2.2.1</dep.plugin.scm.version>
<dep.plugin.shade.version>3.6.1</dep.plugin.shade.version>
<dep.plugin.site.version>3.21.0</dep.plugin.site.version>
<dep.plugin.sortpom.version>4.0.0</dep.plugin.sortpom.version>
<dep.plugin.source.version>3.4.0</dep.plugin.source.version>
<dep.plugin.spotbugs.version>4.9.8.2</dep.plugin.spotbugs.version>
<dep.plugin.surefire.version>3.5.4</dep.plugin.surefire.version>
<dep.plugin.wrapper.version>3.3.4</dep.plugin.wrapper.version>
<!-- Packaging for the tarball deployment -->
<dep.packaging.version>398</dep.packaging.version>
<!-- Dependency versions, keep sorted -->
<dep.asm.version>9.9.1</dep.asm.version>
<dep.assertj-core.version>3.27.7</dep.assertj-core.version>
<dep.byte-buddy.version>1.18.4</dep.byte-buddy.version>
<dep.checkstyle.version>13.1.0</dep.checkstyle.version>
<dep.errorprone.version>2.47.0</dep.errorprone.version>
<dep.guava.version>33.5.0-jre</dep.guava.version>
<dep.guice.version>7.0.0</dep.guice.version>
<dep.hibernate-validator.version>9.1.0.Final</dep.hibernate-validator.version>
<dep.jackson.version>2.21.0</dep.jackson.version>
<dep.jackson3.version>3.0.4</dep.jackson3.version>
<dep.jakarta.annotation-api.version>3.0.0</dep.jakarta.annotation-api.version>
<dep.jakarta.inject-api.version>2.0.1</dep.jakarta.inject-api.version>
<dep.jakarta.rs-ws-api.version>4.0.0</dep.jakarta.rs-ws-api.version>
<dep.jakarta.servlet-api.version>6.1.0</dep.jakarta.servlet-api.version>
<dep.jakarta.validation-api.version>3.1.1</dep.jakarta.validation-api.version>
<dep.jakarta.xml-bind-api.version>4.0.4</dep.jakarta.xml-bind-api.version>
<dep.jetty.version>12.1.6</dep.jetty.version>
<dep.jmh.version>1.37</dep.jmh.version>
<dep.jmxutils.version>1.27</dep.jmxutils.version>
<dep.joda.version>2.14.0</dep.joda.version>
<dep.jsr305.version>3.0.2</dep.jsr305.version>
<!-- junit and junit-platform should have the same minor and patch versions -->
<dep.junit.version>6.0.2</dep.junit.version>
<dep.junit-platform.version>6.0.2</dep.junit-platform.version>
<dep.kotlin.version>2.3.10</dep.kotlin.version>
<dep.launcher.version>313</dep.launcher.version>
<dep.log4j.version>2.25.3</dep.log4j.version>
<dep.logback.version>1.5.27</dep.logback.version>
<dep.opentelemetry-instrumentation.version>2.24.0</dep.opentelemetry-instrumentation.version>
<dep.opentelemetry-instrumentation-alpha.version>2.24.0-alpha</dep.opentelemetry-instrumentation-alpha.version>
<dep.opentelemetry-semconv.version>1.39.0</dep.opentelemetry-semconv.version>
<dep.opentelemetry-semconv-incubating.version>1.39.0-alpha</dep.opentelemetry-semconv-incubating.version>
<dep.opentelemetry.version>1.58.0</dep.opentelemetry.version>
<dep.opentelemetry-alpha.version>1.58.0-alpha</dep.opentelemetry-alpha.version>
<dep.slf4j.version>2.0.17</dep.slf4j.version>
<dep.slice.version>2.5</dep.slice.version>
<dep.spotbugs-annotations.version>4.9.8</dep.spotbugs-annotations.version>
<dep.testng.version>6.10</dep.testng.version>
<!-- license headers -->
<air.license.owner>${project.organization.name}</air.license.owner>
<air.license.default-value>Copyright (C) ${project.inceptionYear} ${air.license.owner}</air.license.default-value>
<air.license.ensure-match>Copyright \(C\) \d{4} .+</air.license.ensure-match>
<air.license.header-file>license/apache-header.txt</air.license.header-file>
<air.license.skip-existing-headers>false</air.license.skip-existing-headers>
<!-- Checkstyle -->
<air.checkstyle.config-file>checkstyle/airbase-checks.xml</air.checkstyle.config-file>
<!-- Readme for launcher -->
<air.readme.file>README.txt</air.readme.file>
<air.readme.type>txt</air.readme.type>
<!-- Properties for controlling distributionManagement -->
<air.repository.snapshot.id>sonatype-central-portal</air.repository.snapshot.id>
<air.repository.snapshot.name>Sonatype Central Portal</air.repository.snapshot.name>
<air.repository.snapshot.url>https://central.sonatype.com/repository/maven-snapshots/</air.repository.snapshot.url>
<air.repository.release.id>sonatype-central-portal</air.repository.release.id>
<air.repository.release.name>Sonatype Central Portal</air.repository.release.name>
<air.repository.release.url>https://repo.maven.apache.org/maven2/</air.repository.release.url>
</properties>
<!-- The following dependency should be the same everywhere. -->
<dependencyManagement>
<dependencies>
<!-- jackson -->
<dependency>
<groupId>com.fasterxml.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>${dep.jackson.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- OpenTelemetry -->
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-bom</artifactId>
<version>${dep.opentelemetry.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-bom-alpha</artifactId>
<version>${dep.opentelemetry-alpha.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-instrumentation-bom</artifactId>
<version>${dep.opentelemetry-instrumentation.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-instrumentation-bom-alpha</artifactId>
<version>${dep.opentelemetry-instrumentation-alpha.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>${dep.log4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-bom</artifactId>
<version>${dep.assertj-core.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-bom</artifactId>
<version>${dep.jetty.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jetty.ee11</groupId>
<artifactId>jetty-ee11-bom</artifactId>
<version>${dep.jetty.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Kotlin -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-bom</artifactId>
<version>${dep.kotlin.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>${dep.junit.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-bom</artifactId>
<version>${dep.asm.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>tools.jackson</groupId>
<artifactId>jackson-bom</artifactId>
<version>${dep.jackson3.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${dep.logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${dep.logback.version}</version>
</dependency>
<!-- FindBugs / SpotBugs -->
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
<version>${dep.spotbugs-annotations.version}</version>
</dependency>
<!-- JSR-305 -->
<dependency>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
<version>${dep.jsr305.version}</version>
</dependency>
<!-- Error Prone -->
<dependency>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_annotations</artifactId>
<version>${dep.errorprone.version}</version>
</dependency>
<!-- guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${dep.guava.version}</version>
<exclusions>
<!-- this empty dependency is a hack and not needed -->
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>listenablefuture</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava-gwt</artifactId>
<version>${dep.guava.version}</version>
<exclusions>
<!-- this empty dependency is a hack and not needed -->
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>listenablefuture</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava-testlib</artifactId>
<version>${dep.guava.version}</version>
<exclusions>
<!-- this empty dependency is a hack and not needed -->
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>listenablefuture</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Google Guice -->
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>${dep.guice.version}</version>
<classifier>classes</classifier>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-assistedinject</artifactId>
<version>${dep.guice.version}</version>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-servlet</artifactId>
<version>${dep.guice.version}</version>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-throwingproviders</artifactId>
<version>${dep.guice.version}</version>
</dependency>
<!-- settles upper bound for guava -->
<dependency>
<groupId>com.google.j2objc</groupId>
<artifactId>j2objc-annotations</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>io.airlift</groupId>
<artifactId>slice</artifactId>
<version>${dep.slice.version}</version>
</dependency>
<dependency>
<groupId>io.opentelemetry.semconv</groupId>
<artifactId>opentelemetry-semconv</artifactId>
<version>${dep.opentelemetry-semconv.version}</version>
</dependency>
<dependency>
<groupId>io.opentelemetry.semconv</groupId>
<artifactId>opentelemetry-semconv-incubating</artifactId>
<version>${dep.opentelemetry-semconv-incubating.version}</version>
</dependency>
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>${dep.jakarta.annotation-api.version}</version>
</dependency>
<dependency>
<groupId>jakarta.inject</groupId>
<artifactId>jakarta.inject-api</artifactId>
<version>${dep.jakarta.inject-api.version}</version>
</dependency>
<!-- misc stuff -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>${dep.jakarta.servlet-api.version}</version>
</dependency>
<dependency>
<groupId>jakarta.validation</groupId>
<artifactId>jakarta.validation-api</artifactId>
<version>${dep.jakarta.validation-api.version}</version>
</dependency>
<dependency>
<groupId>jakarta.ws.rs</groupId>
<artifactId>jakarta.ws.rs-api</artifactId>
<version>${dep.jakarta.rs-ws-api.version}</version>
</dependency>
<!-- xml bind -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>${dep.jakarta.xml-bind-api.version}</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${dep.joda.version}</version>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>${dep.byte-buddy.version}</version>
</dependency>
<!-- Modernizer -->
<dependency>
<groupId>org.gaul</groupId>
<artifactId>modernizer-maven-annotations</artifactId>
<version>${dep.plugin.modernizer.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>${dep.hibernate-validator.version}</version>
</dependency>
<!-- jmh -->
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>${dep.jmh.version}</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>${dep.jmh.version}</version>
</dependency>
<!-- logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${dep.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${dep.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>${dep.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${dep.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-ext</artifactId>
<version>${dep.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<version>${dep.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>${dep.slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${dep.slf4j.version}</version>
</dependency>
<!-- Testing -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>${dep.testng.version}</version>
<exclusions>
<exclusion>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
</exclusion>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.weakref</groupId>
<artifactId>jmxutils</artifactId>
<version>${dep.jmxutils.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<repositories>
<repository>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</pluginRepository>
</pluginRepositories>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>com.github.ekryd.sortpom</groupId>
<artifactId>sortpom-maven-plugin</artifactId>
<version>${dep.plugin.sortpom.version}</version>
<configuration>
<createBackupFile>false</createBackupFile>
<nrOfIndentSpace>4</nrOfIndentSpace>
<sortModules>true</sortModules>
<sortDependencies>scope,groupId,artifactId</sortDependencies>
<sortDependencyExclusions>groupId,artifactId</sortDependencyExclusions>
<spaceBeforeCloseEmptyElement>true</spaceBeforeCloseEmptyElement>
<expandEmptyElements>false</expandEmptyElements>
<verifyFailOn>Strict</verifyFailOn>
<verifyFail>Stop</verifyFail>
</configuration>
<executions>
<execution>
<goals>
<goal>verify</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>eu.maveniverse.maven.plugins</groupId>
<artifactId>njord</artifactId>
<version>${dep.plugin.njord.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>${dep.plugin.scm.version}</version>
<configuration>
<connectionType>developerConnection</connectionType>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>${dep.plugin.deploy.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${dep.plugin.clean.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>${dep.plugin.install.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>${dep.plugin.build-helper.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>${dep.plugin.enforcer.version}</version>
<configuration>
<skip>${air.check.skip-enforcer}</skip>
<fail>${air.check.fail-enforcer}</fail>
<failFast>false</failFast>
<rules>
<!-- The following dependencies are hazardous for builds. -->
<bannedDependencies>
<excludes>
<!-- clashes with commons-logging:commons-logging -->
<exclude>commons-logging:commons-logging-api</exclude>
<!-- old versions of junit repackage hamcrest -->
<exclude>junit:junit</exclude>
<!-- use guava -->
<exclude>com.google.collections:google-collections</exclude>
<!-- but not the badly numbered ones... -->
<exclude>com.google.guava:guava</exclude>
<!-- the non-empty verison overlaps with classes in guava -->
<exclude>com.google.guava:listenablefuture</exclude>
<!-- Contains FindBugs annotations, JSR-305 and JCIP annotations -->
<exclude>com.google.code.findbugs:annotations</exclude>
<!-- use the newer Jetty version of the servlet API -->
<exclude>javax.servlet:javax.servlet-api</exclude>
<exclude>org.eclipse.jetty.orbit:javax.servlet</exclude>
<!-- Renamed airlift modules -->
<exclude>io.airlift:discovery-experimental</exclude>
<exclude>io.airlift:event-experimental</exclude>
<exclude>io.airlift:http-client-experimental</exclude>
<exclude>io.airlift:jmx-http-experimental</exclude>
<exclude>io.airlift:jmx-http-rpc-experimental</exclude>
<exclude>io.airlift:rack-experimental</exclude>
<exclude>io.airlift:rack-launcher-experimental</exclude>
<exclude>io.airlift:rack-packaging-experimental</exclude>
<exclude>io.airlift:rack-server-base-experimental</exclude>
<!-- log4j2 versions < 2.15.0 are vulnerable to the Log4Shell RCE (CVE-2021-44228) -->
<exclude>org.apache.logging.log4j:log4j-core:(,2.15.0)</exclude>
<exclude>com.google.inject:guice</exclude>
</excludes>
<includes>
<!-- whitelist the well numbered guava releases -->
<include>com.google.guava:guava:[10.0.1,)</include>
<!-- newer versions of junit do not repackage hamcrest -->
<include>junit:junit:[4.11,)</include>
<include>com.google.inject:guice:classes</include>
</includes>
</bannedDependencies>
<banDuplicatePomDependencyVersions />
<requireUpperBoundDeps />
<requireMavenVersion>
<version>${air.maven.version}</version>
</requireMavenVersion>
<requireJavaVersion>
<version>${air.java.version}</version>
</requireJavaVersion>
<enforceBytecodeVersion>
<maxJdkVersion>${project.build.targetJdk}</maxJdkVersion>
<ignoredScopes>test</ignoredScopes>
<excludes>
<exclude>org.eclipse.jetty:jetty-alpn-java-client</exclude>
<exclude>org.eclipse.jetty:jetty-alpn-java-server</exclude>
</excludes>
</enforceBytecodeVersion>
<requirePluginVersions>
<message>Providing the plugin version explicitly makes the builds reproducible</message>
</requirePluginVersions>
<RestrictImports>
<reason>Importing internal classes is not allowed</reason>
<bannedImports>
<bannedImport>jdk.internal.**</bannedImport>
<bannedImport>jdk.nashorn.internal.**</bannedImport>
<bannedImport>org.glassfish.jersey.internal.guava.**</bannedImport>
<bannedImport>org.glassfish.jersey.internal.util.**</bannedImport>
<bannedImport>jersey.repackaged.**</bannedImport>
<bannedImport>org.weakref.jmx.internal.**</bannedImport>
<bannedImport>**.$internal.**</bannedImport>
</bannedImports>
</RestrictImports>
<RestrictImports>
<reason>Importing shaded classes is not allowed</reason>
<bannedImports>
<bannedImport>**.shaded.com.google.**</bannedImport>
<bannedImport>**.shaded.okhttp3.**</bannedImport>
<bannedImport>**.shaded.org.apache.**</bannedImport>
<bannedImport>org.testcontainers.shaded.**</bannedImport>
</bannedImports>
</RestrictImports>
<RestrictImports>
<reason>Use javax.annotation.Nullable instead of org.jetbrains.annotations.Nullable</reason>
<bannedImports>
<bannedImport>org.jetbrains.annotations.Nullable</bannedImport>
</bannedImports>
</RestrictImports>
<RestrictImports>
<reason>Not null is the default for the codebase and should not be annotated</reason>
<bannedImports>
<bannedImport>org.jetbrains.annotations.NotNull</bannedImport>
</bannedImports>
</RestrictImports>
<RestrictImports>
<reason>Use org.testng.Assert instead of org.testng.AssertJUnit</reason>
<bannedImports>
<bannedImport>org.testng.AssertJUnit</bannedImport>
<bannedImport>org.testng.AssertJUnit.*</bannedImport>
</bannedImports>
</RestrictImports>
<RestrictImports>
<reason>These classes were introduced to overcome type inference issues in Java 8, but the regular org.assertj.core.api.Assertions works just fine and has a richer API</reason>
<bannedImports>
<bannedImport>org.assertj.core.api.AssertionsForClassTypes</bannedImport>
<bannedImport>org.assertj.core.api.AssertionsForClassTypes.*</bannedImport>
<bannedImport>org.assertj.core.api.AssertionsForInterfaceTypes</bannedImport>
<bannedImport>org.assertj.core.api.AssertionsForInterfaceTypes.*</bannedImport>
</bannedImports>
</RestrictImports>
<RestrictImports>
<!-- See https://github.com/trinodb/trino/pull/28055 description for detailed problem analysis -->
<reason>The awaitility library mutates JVM state and affects isolation between JUnit tests (https://github.com/awaitility/awaitility/issues/120#issuecomment-420977109). Its use is discouraged.</reason>
<bannedImports>
<bannedImport>org.awaitility.**</bannedImport>
<bannedImport>**.org.awaitility.**</bannedImport>
</bannedImports>
</RestrictImports>
<requireProfileIdsExist />
<requirePropertyDiverges>
<property>project.description</property>
<reference>PARENT</reference>
</requirePropertyDiverges>
</rules>
</configuration>
<dependencies>
<dependency>
<groupId>de.skuzzle.enforcer</groupId>
<artifactId>restrict-imports-enforcer-rule</artifactId>
<version>${dep.plugin.restrict-imports.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.mojo</groupId>
<artifactId>extra-enforcer-rules</artifactId>
<version>${dep.plugin.enforcer-extra.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>default</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${dep.plugin.dependency.version}</version>
<configuration>
<skip>${air.check.skip-dependency}</skip>
<failOnWarning>${air.check.fail-dependency}</failOnWarning>
<ignoreNonCompile>true</ignoreNonCompile>
</configuration>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>${dep.asm.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>default</id>
<goals>
<goal>analyze-only</goal>
<goal>analyze-duplicate</goal>
</goals>
<phase>process-test-classes</phase>
</execution>
</executions>
</plugin>
<!-- Tweak the compiler to use more memory and use UTF-8 for the source code. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${dep.plugin.compiler.version}</version>
<configuration>
<source>${project.build.targetJdk}</source>
<release>${project.build.targetJdk}</release>
<encoding>${project.build.sourceEncoding}</encoding>
<fork>${air.compiler.fork}</fork>
<maxmem>${air.build.jvmsize}</maxmem>
<failOnWarning>${air.compiler.fail-warnings}</failOnWarning>
<showDeprecation>true</showDeprecation>
<showWarnings>true</showWarnings>
<parameters>true</parameters>
<enablePreview>${air.compiler.enable-preview}</enablePreview>
</configuration>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>${dep.asm.version}</version>
</dependency>
</dependencies>
</plugin>
<!-- Resource plugins should always use UTF-8 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>${dep.plugin.resources.version}</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
<propertiesEncoding>ISO-8859-1</propertiesEncoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>${dep.plugin.assembly.version}</version>
<configuration>
<!-- must be true for jar-with-dependencies builds -->
<appendAssemblyId>true</appendAssemblyId>
<!-- Always use Posix tar mode. -->
<tarLongFileMode>posix</tarLongFileMode>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${dep.plugin.surefire.version}</version>
<configuration>
<systemPropertyVariables>
<sun.jnu.encoding>${project.build.sourceEncoding}</sun.jnu.encoding>
<user.timezone>${air.test.timezone}</user.timezone>
<java.awt.headless>true</java.awt.headless>
<java.util.logging.SimpleFormatter.format>%1$tY-%1$tm-%1$tdT%1$tH:%1$tM:%1$tS.%1$tL%1$tz %4$s %5$s%6$s%n</java.util.logging.SimpleFormatter.format>
</systemPropertyVariables>
<trimStackTrace>false</trimStackTrace>
<runOrder>random</runOrder>
<failIfNoTests>true</failIfNoTests>
<parallel>${air.test.parallel}</parallel>
<threadCount>${air.test.thread-count}</threadCount>
<!-- @{argLine} is for Jacoco: https://www.eclemma.org/jacoco/trunk/doc/prepare-agent-mojo.html -->
<argLine>
@{argLine}
<!-- Pass the following properties directly to the JVM, because they are not passed correctly by Surefire: -->
-Duser.language=${air.test.language}
-Duser.region=${air.test.region}
-Dfile.encoding=${project.build.sourceEncoding}
-Xmx${air.test.jvmsize}
-Xms${air.test.jvmsize}
-XX:+ExitOnOutOfMemoryError
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
${surefireEnablePreview}
${air.test.jvm.additional-arguments}
</argLine>
</configuration>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-engine</artifactId>
<version>${dep.junit-platform.version}</version>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>${dep.junit-platform.version}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${dep.plugin.release.version}</version>
<configuration>
<releaseProfiles>${air.release.release-profiles}</releaseProfiles>
<autoVersionSubmodules>${air.release.auto-version-submodules}</autoVersionSubmodules>
<mavenExecutorId>forked-path</mavenExecutorId>
<pushChanges>${air.release.push-changes}</pushChanges>
<localCheckout>true</localCheckout>
<preparationGoals>${air.release.preparation-goals}</preparationGoals>
<tagNameFormat>${air.release.tag-name-format}</tagNameFormat>
<useReleaseProfile>false</useReleaseProfile>
<goals>deploy</goals>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${dep.plugin.javadoc.version}</version>
<configuration>
<quiet>true</quiet>
<source>${project.build.targetJdk}</source>
<encoding>${project.build.sourceEncoding}</encoding>
<maxmemory>${air.build.jvmsize}</maxmemory>
<doclint>${air.javadoc.lint}</doclint>
<notimestamp>true</notimestamp>
<detectOfflineLinks>false</detectOfflineLinks>
<additionalOptions>${surefireEnablePreview}</additionalOptions>
</configuration>
<executions>
<execution>
<id>attach-javadocs</id>
<goals>
<goal>jar</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
<!-- Always build a jar with the test classes -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${dep.plugin.jar.version}</version>
<configuration>
<!-- do not build an empty jar if the project is
e.g. a pom project -->
<skipIfEmpty>true</skipIfEmpty>
<archive>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
<addClasspath>false</addClasspath>
</manifest>
<manifestEntries>
<!-- This is actually the time when the commit was done -->
<Build-Time>${git.commit.time}</Build-Time>
<Git-Commit-Id>${git.commit.id}</Git-Commit-Id>
<Implementation-Version>${git.commit.id.describe}</Implementation-Version>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<id>attach-tests</id>
<goals>
<goal>test-jar</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>io.github.git-commit-id</groupId>
<artifactId>git-commit-id-maven-plugin</artifactId>
<version>${dep.plugin.commit-id.version}</version>
<configuration>
<!-- Include only properties used above to speed up build (https://github.com/git-commit-id/git-commit-id-maven-plugin/issues/462) -->
<includeOnlyProperties>
<includeOnlyProperty>\Qgit.commit.id</includeOnlyProperty>
<includeOnlyProperty>\Qgit.commit.id.describe</includeOnlyProperty>
<includeOnlyProperty>\Qgit.commit.time</includeOnlyProperty>
</includeOnlyProperties>
<dateFormat>yyyy-MM-dd'T'HH:mm:ssXXX</dateFormat>
<dateFormatTimeZone>UTC</dateFormatTimeZone>
<gitDescribe>
<tags>true</tags>
</gitDescribe>
<injectAllReactorProjects>true</injectAllReactorProjects>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-wrapper-plugin</artifactId>
<version>${dep.plugin.wrapper.version}</version>
<configuration>
<mavenVersion>${air.maven.version}</mavenVersion>
<distributionType>only-script</distributionType>
</configuration>
</plugin>
<!-- bundle up source code into jars for both the main and the test sources -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${dep.plugin.source.version}</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
<goal>test-jar-no-fork</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.basepom.maven</groupId>
<artifactId>duplicate-finder-maven-plugin</artifactId>
<version>${dep.plugin.duplicate-finder.version}</version>
<configuration>
<skip>${air.check.skip-duplicate-finder}</skip>
<failBuildInCaseOfConflict>${air.check.fail-duplicate-finder}</failBuildInCaseOfConflict>
<exceptions>
<!-- Well done, Apache... -->
<exception>
<conflictingDependencies>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils-core</artifactId>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</dependency>
</conflictingDependencies>
<classes>
<class>org.apache.commons.collections.ArrayStack</class>
<class>org.apache.commons.collections.Buffer</class>
<class>org.apache.commons.collections.BufferUnderflowException</class>
<class>org.apache.commons.collections.FastHashMap</class>
</classes>
</exception>
<exception>
<conflictingDependencies>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils-core</artifactId>
</dependency>
</conflictingDependencies>
<packages>
<package>org.apache.commons.beanutils</package>
</packages>
</exception>
</exceptions>
<!-- Ruby is hopeless -->
<ignoredDependencies>
<dependency>
<groupId>org.jruby</groupId>
<artifactId>jruby-complete</artifactId>
</dependency>
</ignoredDependencies>
<ignoredResourcePatterns>
<ignoredResourcePattern>.*\.html</ignoredResourcePattern>
<ignoredResourcePattern>META-INF/.*</ignoredResourcePattern>
<ignoredResourcePattern>about_files/.*</ignoredResourcePattern>
<ignoredResourcePattern>plugin\.properties</ignoredResourcePattern>
<ignoredResourcePattern>.*\.java</ignoredResourcePattern>
<ignoredResourcePattern>THIRD-PARTY</ignoredResourcePattern>
</ignoredResourcePatterns>
</configuration>
<executions>
<execution>
<id>default</id>
<goals>
<goal>check</goal>
</goals>
<phase>process-test-classes</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.basepom.maven</groupId>
<artifactId>dependency-scope-maven-plugin</artifactId>
<version>${dep.plugin.dependency-scope.version}</version>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
<configuration>
<skip>${air.check.skip-dependency-scope}</skip>
<fail>${air.check.fail-dependency-scope}</fail>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<version>${dep.plugin.spotbugs.version}</version>
<configuration>
<skip>${air.check.skip-spotbugs}</skip>
<jvmArgs>-Xmx${air.build.jvmsize}</jvmArgs>
<failOnError>${air.check.fail-spotbugs}</failOnError>
</configuration>
<executions>
<execution>
<id>default</id>
<goals>
<goal>check</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${dep.plugin.pmd.version}</version>
<configuration>
<skip>${air.check.skip-pmd}</skip>
<failOnViolation>${air.check.fail-pmd}</failOnViolation>
<targetJdk>${project.build.targetJdk}</targetJdk>
<minimumTokens>100</minimumTokens>
<excludes>
<exclude>**/*Bean.java</exclude>
<exclude>**/generated/*.java</exclude>
</excludes>
<excludeRoots>
<excludeRoot>target/generated-sources/stubs</excludeRoot>
</excludeRoots>
<rulesets>
<ruleset>/rulesets/java/basic.xml</ruleset>
<ruleset>/rulesets/java/clone.xml</ruleset>
<ruleset>/rulesets/java/finalizers.xml</ruleset>
</rulesets>
</configuration>
<dependencies>
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-core</artifactId>
<version>${dep.plugin.pmd-runtime.version}</version>
</dependency>
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-java</artifactId>
<version>${dep.plugin.pmd-runtime.version}</version>
</dependency>
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-javascript</artifactId>
<version>${dep.plugin.pmd-runtime.version}</version>
</dependency>
<dependency>
<groupId>net.sourceforge.pmd</groupId>
<artifactId>pmd-jsp</artifactId>
<version>${dep.plugin.pmd-runtime.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>default</id>
<goals>
<goal>check</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>${dep.plugin.license.version}</version>
<configuration>
<skip>${air.check.skip-license}</skip>
<skipExistingHeaders>${air.license.skip-existing-headers}</skipExistingHeaders>
<failIfMissing>${air.check.fail-license}</failIfMissing>
<licenseSets>
<licenseSet>
<header>${air.license.header-file}</header>
<headerSections>
<headerSection>
<key>COPYRIGHT_SECTION</key>
<defaultValue>${air.license.default-value}</defaultValue>
<ensureMatch>${air.license.ensure-match}</ensureMatch>
<multiLineMatch>false</multiLineMatch>
</headerSection>
</headerSections>
<excludes>
<exclude>.*/**</exclude>
<exclude>**/*.md</exclude>
<exclude>**/*.sh</exclude>
<exclude>**/*.txt</exclude>
<exclude>**/*.thrift</exclude>
<exclude>**/*.sql</exclude>
<exclude>**/*.releaseBackup</exclude>
<exclude>**/*.st</exclude>
<exclude>**/*.raw</exclude>
<exclude>**/*.ser</exclude>
<exclude>**/*.html</exclude>
<exclude>**/*.rst</exclude>
<exclude>**/*.xml</exclude>
<exclude>**/*.csv</exclude>
<exclude>**/*.tsv</exclude>
<exclude>**/*.properties</exclude>
<exclude>**/src/license/**</exclude>
<exclude>**/src/*/resources/**</exclude>
</excludes>
<includes>
<include>src/**</include>
</includes>
</licenseSet>
</licenseSets>
<mapping>
<java>SLASHSTAR_STYLE</java>
<g>SLASHSTAR_STYLE</g>
<g4>SLASHSTAR_STYLE</g4>
</mapping>
<properties>
<inceptionYear>${project.inceptionYear}</inceptionYear>
</properties>
<strictCheck>true</strictCheck>
<aggregate>true</aggregate>
<useDefaultExcludes>true</useDefaultExcludes>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
<dependencies>
<!-- This version must match the Airbase version. It will be updated by -->
<!-- the Maven Release plugin. The "project.version" property cannot be -->
<!-- used here as it will resolve to the version of the child project. -->
<dependency>
<groupId>io.airlift</groupId>
<artifactId>airbase-policy</artifactId>
<version>350</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>default</id>
<goals>
<goal>check</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${dep.plugin.jacoco.version}</version>
<configuration>
<skip>${air.check.skip-jacoco}</skip>
</configuration>
<executions>
<execution>
<id>default</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<goals>
<goal>report</goal>
</goals>
<phase>prepare-package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.gaul</groupId>
<artifactId>modernizer-maven-plugin</artifactId>
<version>${dep.plugin.modernizer.version}</version>
<configuration>
<skip>${air.check.skip-modernizer}</skip>
<failOnViolations>${air.check.fail-modernizer}</failOnViolations>
<javaVersion>${air.modernizer.java-version}</javaVersion>
</configuration>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>${dep.asm.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>modernizer</id>
<goals>
<goal>modernizer</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${dep.plugin.checkstyle.version}</version>
<configuration>
<skip>${air.check.skip-checkstyle}</skip>
<failOnViolation>${air.check.fail-checkstyle}</failOnViolation>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<configLocation>${air.checkstyle.config-file}</configLocation>
<excludes>**/module-info.java</excludes>
</configuration>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>${dep.checkstyle.version}</version>
</dependency>
<!-- This version must match the Airbase version. It will be updated by -->
<!-- the Maven Release plugin. The "project.version" property cannot be -->
<!-- used here as it will resolve to the version of the child project. -->
<dependency>
<groupId>io.airlift</groupId>
<artifactId>airbase-policy</artifactId>
<version>350</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>checkstyle</id>
<goals>
<goal>check</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>${dep.plugin.gpg.version}</version>
<configuration>
<useAgent>true</useAgent>
</configuration>
<executions>
<execution>
<id>sign-artifacts</id>
<goals>
<goal>sign</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${dep.plugin.site.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>${dep.plugin.shade.version}</version>
<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>${dep.asm.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
<!-- This is the list of plugins used for the main build. -->
<!-- Check plugins (except dependency-plugin) are enabled using profiles. -->
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
</plugin>
<plugin>
<groupId>io.github.git-commit-id</groupId>
<artifactId>git-commit-id-maven-plugin</artifactId>
<executions>
<execution>
<id>default</id>
<goals>
<goal>revision</goal>
</goals>
<phase>initialize</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>surefire-enable-preview</id>
<goals>
<goal>bsh-property</goal>
</goals>
<phase>initialize</phase>
<configuration>
<properties>
<property>surefireEnablePreview</property>
</properties>
<source>value = project.getProperties().getProperty("air.compiler.enable-preview");
surefireEnablePreview = Boolean.parseBoolean(value) ? "--enable-preview" : "";</source>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>eu.maveniverse.maven.njord</groupId>
<artifactId>extension3</artifactId>
<version>${dep.plugin.njord.version}</version>
</extension>
<extension>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-gitexe</artifactId>
<version>${dep.plugin.scm.version}</version>
</extension>
<extension>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-manager-plexus</artifactId>
<version>${dep.plugin.scm.version}</version>
</extension>
</extensions>
</build>
<profiles>
<!-- All the check plugins below are enabled unless air.check.skip-all is set.
If other properties are set, like air.check.skip-extended, or air.check.skip-<name>,
these plugins will be skipped in their configuration.
Multiple properties cannot be used in activation, and properties are evaluated after activating profiles. -->
<profile>
<id>enforcer-check</id>
<activation>
<property>
<name>air.check.skip-all</name>
<value>!true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>duplicate-finder-check</id>
<activation>
<property>
<name>air.check.skip-all</name>
<value>!true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.basepom.maven</groupId>
<artifactId>duplicate-finder-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>sort-pom-check</id>
<activation>
<property>
<name>air.check.skip-all</name>
<value>!true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.github.ekryd.sortpom</groupId>
<artifactId>sortpom-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>dependency-scope-check</id>
<activation>
<property>
<name>air.check.skip-all</name>
<value>!true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.basepom.maven</groupId>
<artifactId>dependency-scope-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>spotbugs-check</id>
<activation>
<property>
<name>air.check.skip-all</name>
<value>!true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>pmd-check</id>
<activation>
<property>
<name>air.check.skip-all</name>
<value>!true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>license-check</id>
<activation>
<property>
<name>air.check.skip-all</name>
<value>!true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.mycila</groupId>
<artifactId>license-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>jacoco-check</id>
<activation>
<property>
<name>air.check.skip-all</name>
<value>!true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>modernizer-check</id>
<activation>
<property>
<name>air.check.skip-all</name>
<value>!true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.gaul</groupId>
<artifactId>modernizer-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>checkstyle-check</id>
<activation>
<property>
<name>air.check.skip-all</name>
<value>!true</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>oss-release</id>
<properties>
<!-- tests run in the preparation step of the release -->
<skipTests>true</skipTests>
<njord.publishingType>automatic</njord.publishingType>
<njord.waitForStates>true</njord.waitForStates>
</properties>
<build>
<plugins>
<!-- oss requires a javadoc jar. Build one when releasing. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
<!-- Sign artifacts using gpg for oss upload -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<!-- we will push commits and tags manually in the workflow -->
<pushChanges>false</pushChanges>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>ci</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
</plugin>
</plugins>
</build>
</profile>
<!-- ======================================================================== -->
<!-- = = -->
<!-- = Build a tarball with launcher from a module if .build-airlift = -->
<!-- = is present = -->
<!-- = = -->
<!-- ======================================================================== -->
<profile>
<id>build-airlift</id>
<activation>
<file>
<exists>.build-airlift</exists>
</file>
</activation>
<properties>
<process-name>${project.artifactId}</process-name>
</properties>
<dependencies>
<dependency>
<groupId>io.airlift</groupId>
<artifactId>launcher</artifactId>
<version>${dep.launcher.version}</version>
<classifier>bin</classifier>
<type>tar.gz</type>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.airlift</groupId>
<artifactId>launcher</artifactId>
<version>${dep.launcher.version}</version>
<classifier>properties</classifier>
<type>tar.gz</type>
<scope>runtime</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<configuration>
<rules combine.children="append">
<requireProperty>
<property>main-class</property>
<message>The main-class property must be specified when building an airlift tarball.</message>
<regex>.+</regex>
<regexMessage>The main-class property can not be empty.</regexMessage>
</requireProperty>
</rules>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<appendAssemblyId>false</appendAssemblyId>
<attach>true</attach>
<descriptorRefs>
<descriptorRef>distribution</descriptorRef>
</descriptorRefs>
</configuration>
<dependencies>
<dependency>
<groupId>io.airlift</groupId>
<artifactId>packaging</artifactId>
<version>${dep.packaging.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>package</id>
<goals>
<goal>single</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>attach-readme</id>
<goals>
<goal>attach-artifact</goal>
</goals>
<phase>package</phase>
<configuration>
<artifacts>
<artifact>
<file>${air.readme.file}</file>
<type>${air.readme.type}</type>
<classifier>readme</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>