<!--
  ~ JBoss, Home of Professional Open Source.
  ~ Copyright 2018 Red Hat, Inc., and individual contributors
  ~ as indicated by the @author tags.
  ~
  ~ 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/maven-v4_0_0.xsd" child.project.url.inherit.append.path="false">

    <modelVersion>4.0.0</modelVersion>

    <groupId>org.jboss</groupId>
    <version>49</version>
    <artifactId>jboss-parent</artifactId>

    <packaging>pom</packaging>

    <name>JBoss Parent POM</name>
    <description>Provides, via submodules, a base configuration for JBoss project builds, as well as a derived configuration supporting multi-release JARs</description>
    <url>http://www.jboss.org</url>

    <issueManagement>
        <system>JIRA</system>
        <url>https://issues.redhat.com/</url>
    </issueManagement>

    <scm child.scm.connection.inherit.append.path="false" child.scm.developerConnection.inherit.append.path="false" child.scm.url.inherit.append.path="false">
        <connection>scm:git:git@github.com:jboss/jboss-parent-pom.git</connection>
        <developerConnection>scm:git:git@github.com:jboss/jboss-parent-pom.git</developerConnection>
        <url>http://github.com/jboss/jboss-parent-pom</url>
        <tag>HEAD</tag>
    </scm>

    <developers>
        <developer>
            <id>jboss.org</id>
            <name>JBoss.org Community</name>
            <organization>JBoss.org</organization>
            <organizationUrl>http://www.jboss.org</organizationUrl>
        </developer>
    </developers>

    <mailingLists>
        <mailingList>
            <name>JBoss User List</name>
            <subscribe>https://lists.jboss.org/mailman/listinfo/jboss-user</subscribe>
            <unsubscribe>https://lists.jboss.org/mailman/listinfo/jboss-user</unsubscribe>
            <archive>http://lists.jboss.org/pipermail/jboss-user/</archive>
        </mailingList>
        <mailingList>
            <name>JBoss Developer List</name>
            <subscribe>https://lists.jboss.org/mailman/listinfo/jboss-development</subscribe>
            <unsubscribe>https://lists.jboss.org/mailman/listinfo/jboss-development</unsubscribe>
            <archive>http://lists.jboss.org/pipermail/jboss-development/</archive>
        </mailingList>
    </mailingLists>

    <licenses>
        <license>
            <name>Apache License 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <organization>
        <name>JBoss by Red Hat</name>
        <url>http://www.jboss.org</url>
    </organization>

    <properties>
      <!-- **************** -->
      <!-- Plugins versions -->
      <!-- **************** -->
      <version.antrun.plugin>3.1.0</version.antrun.plugin>
      <version.archetype.plugin>3.3.1</version.archetype.plugin>
      <version.assembly.plugin>3.7.1</version.assembly.plugin>
      <version.buildhelper.plugin>3.6.0</version.buildhelper.plugin>
      <version.buildnumber.plugin>3.2.1</version.buildnumber.plugin>
      <version.bundle.plugin>6.0.0</version.bundle.plugin>
      <version.checkstyle.plugin>3.6.0</version.checkstyle.plugin>
      <version.clean.plugin>3.4.1</version.clean.plugin>
      <version.clover.plugin>4.1.10.1</version.clover.plugin>
      <version.cobertura.plugin>2.7</version.cobertura.plugin>
      <version.compiler.plugin>3.14.0</version.compiler.plugin>
      <version.dependency.plugin>3.8.1</version.dependency.plugin>
      <version.deploy.plugin>3.1.4</version.deploy.plugin>
      <version.download.plugin>1.13.0</version.download.plugin>
      <version.ear.plugin>3.3.0</version.ear.plugin>
      <version.org.eclipse.m2e.lifecycle-mapping>1.0.0</version.org.eclipse.m2e.lifecycle-mapping>
      <version.ejb.plugin>3.2.1</version.ejb.plugin>
      <version.exec.plugin>3.5.0</version.exec.plugin>
      <version.enforcer.plugin>3.5.0</version.enforcer.plugin>
      <version.findbugs.plugin>3.0.5</version.findbugs.plugin>
      <version.gpg.plugin>3.2.7</version.gpg.plugin>
      <version.help.plugin>3.5.1</version.help.plugin>
      <version.injection.plugin>1.0.2</version.injection.plugin>
      <version.install.plugin>3.1.4</version.install.plugin>
      <version.jar.plugin>3.4.2</version.jar.plugin>
      <version.javadoc.plugin>3.11.2</version.javadoc.plugin>
      <version.javancss.plugin>2.1</version.javancss.plugin>
      <version.jxr.plugin>3.6.0</version.jxr.plugin>
      <version.license.plugin>2.5.0</version.license.plugin>
      <version.pir.plugin>2.9</version.pir.plugin><!-- maven-project-info-reports-plugins -->
      <version.plexus.archiver>4.10.0</version.plexus.archiver>
      <version.plugin.plugin>3.15.1</version.plugin.plugin>
      <version.pmd.plugin>3.26.0</version.pmd.plugin>
      <version.rar.plugin>3.0.0</version.rar.plugin>
      <version.release.plugin>3.1.1</version.release.plugin>
      <version.resources.plugin>3.3.1</version.resources.plugin>
      <!-- DO NOT UPGRADE SHADE PLUGIN DEPENDENCY until https://issues.apache.org/jira/browse/MSHADE-419 is resolved -->
      <!-- See also https://github.com/jboss/jboss-parent-pom/issues/210 -->
      <version.shade.plugin>3.2.4</version.shade.plugin>
      <version.site.plugin>3.21.0</version.site.plugin>
      <version.sonar.plugin>5.0.0.4389</version.sonar.plugin>
      <!-- DO NOT UPGRADE SOURCE PLUGIN DEPENDENCY until https://issues.apache.org/jira/browse/MSOURCES-140 is resolved -->
      <version.source.plugin>3.2.1</version.source.plugin>
      <version.surefire.plugin>${version.surefire}</version.surefire.plugin>
      <version.surefire-report.plugin>${version.surefire}</version.surefire-report.plugin>
      <version.failsafe.plugin>${version.surefire}</version.failsafe.plugin>
      <version.versions.plugin>2.18.0</version.versions.plugin>
      <version.war.plugin>3.4.0</version.war.plugin>
      <version.zanata.plugin>4.6.2</version.zanata.plugin>

      <!-- ***************** -->
      <!-- Other versions -->
      <!-- ***************** -->
      <version.checkstyle>10.21.4</version.checkstyle>
      <version.surefire>3.5.2</version.surefire>

      <!-- ***************** -->
      <!-- Repository Deployment URLs -->
      <!-- ***************** -->
      <jboss.releases.repo.id>jboss-releases-repository</jboss.releases.repo.id>
      <jboss.releases.repo.url>https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/</jboss.releases.repo.url>
      <jboss.snapshots.repo.id>jboss-snapshots-repository</jboss.snapshots.repo.id>
      <jboss.snapshots.repo.url>https://repository.jboss.org/nexus/content/repositories/snapshots/</jboss.snapshots.repo.url>

      <!-- ************** -->
      <!-- Build settings -->
      <!-- ************** -->

      <!-- Cross plugins settings -->
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

      <!-- maven-compiler-plugin -->
      <maven.compiler.target>11</maven.compiler.target>
      <maven.compiler.source>11</maven.compiler.source>
      <maven.compiler.testTarget>${maven.compiler.target}</maven.compiler.testTarget>
      <maven.compiler.testSource>${maven.compiler.source}</maven.compiler.testSource>

      <!--
          Options to override the compiler arguments directly on the compiler argument line to separate between what
          the IDE understands as the source level and what the Maven compiler actually use.
      -->
      <maven.compiler.argument.target>${maven.compiler.target}</maven.compiler.argument.target>
      <maven.compiler.argument.source>${maven.compiler.source}</maven.compiler.argument.source>
      <maven.compiler.argument.testTarget>${maven.compiler.testTarget}</maven.compiler.argument.testTarget>
      <maven.compiler.argument.testSource>${maven.compiler.testSource}</maven.compiler.argument.testSource>

      <!-- maven-enforcer-plugin -->
      <maven.min.version>3.6.2</maven.min.version>
      <jdk.min.version>${maven.compiler.argument.source}</jdk.min.version>
      <insecure.repositories>ERROR</insecure.repositories>

      <!-- maven-idea-plugin & maven-eclipse-plugin -->
      <downloadSources>true</downloadSources>

      <!-- maven-pmd-plugin -->
      <targetJdk>${maven.compiler.argument.target}</targetJdk>

      <!-- maven-release-plugin -->
      <useReleaseProfile>false</useReleaseProfile>
      <arguments>-Pjboss-release</arguments>

      <!-- maven-assembly-plugin -->
      <sourceReleaseAssemblyDescriptor>source-release</sourceReleaseAssemblyDescriptor>
      <!-- exposed additional params for javadoc, such as Xlint -->
      <javadoc.additional.params>-Xdoclint:none</javadoc.additional.params>
    </properties>

    <build>

      <pluginManagement>
        <!-- All plugins ordered by shortname (antrun, assembly ...) -->
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>${version.antrun.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-archetype-plugin</artifactId>
            <version>${version.archetype.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>${version.assembly.plugin}</version>
            <configuration>
              <archive>
                <index>true</index>
                <manifest>
                  <addDefaultSpecificationEntries>
                    true
                  </addDefaultSpecificationEntries>
                  <addDefaultImplementationEntries>
                    true
                  </addDefaultImplementationEntries>
                </manifest>
                <manifestEntries>
                  <Implementation-URL>${project.url}</Implementation-URL>
                  <Java-Version>${java.version}</Java-Version>
                  <Java-Vendor>${java.vendor}</Java-Vendor>
                  <Os-Name>${os.name}</Os-Name>
                  <Os-Arch>${os.arch}</Os-Arch>
                  <Os-Version>${os.version}</Os-Version>
                  <Scm-Url>${project.scm.url}</Scm-Url>
                  <Scm-Connection>${project.scm.connection}</Scm-Connection>
                  <Scm-Revision>${buildNumber}</Scm-Revision>
                </manifestEntries>
              </archive>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>${version.buildhelper.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <version>${version.buildnumber.plugin}</version>
          </plugin>
          <plugin>
            <groupId>com.googlecode.maven-download-plugin</groupId>
            <artifactId>download-maven-plugin</artifactId>
            <version>${version.download.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>${version.bundle.plugin}</version>
            <configuration>
              <archive>
                <index>true</index>
                <manifest>
                  <addDefaultSpecificationEntries>
                    true
                  </addDefaultSpecificationEntries>
                  <addDefaultImplementationEntries>
                    true
                  </addDefaultImplementationEntries>
                </manifest>
                <manifestEntries>
                  <Implementation-URL>${project.url}</Implementation-URL>
                  <Java-Version>${java.version}</Java-Version>
                  <Java-Vendor>${java.vendor}</Java-Vendor>
                  <Os-Name>${os.name}</Os-Name>
                  <Os-Arch>${os.arch}</Os-Arch>
                  <Os-Version>${os.version}</Os-Version>
                  <Scm-Url>${project.scm.url}</Scm-Url>
                  <Scm-Connection>${project.scm.connection}</Scm-Connection>
                </manifestEntries>
              </archive>
              <instructions>
                <Scm-Revision>${buildNumber}</Scm-Revision>
              </instructions>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>${version.checkstyle.plugin}</version>
            <dependencies>
              <dependency>
                <groupId>com.puppycrawl.tools</groupId>
                <artifactId>checkstyle</artifactId>
                <version>${version.checkstyle}</version>
                <exclusions>
                  <exclusion>
                    <groupId>com.sun</groupId>
                    <artifactId>tools</artifactId>
                  </exclusion>
                </exclusions>
              </dependency>
            </dependencies>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-clean-plugin</artifactId>
            <version>${version.clean.plugin}</version>
          </plugin>
          <plugin>
            <groupId>com.atlassian.maven.plugins</groupId>
            <artifactId>clover-maven-plugin</artifactId>
            <version>${version.clover.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>cobertura-maven-plugin</artifactId>
            <version>${version.cobertura.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>${version.compiler.plugin}</version>
            <configuration>
              <showDeprecation>true</showDeprecation>
              <showWarnings>true</showWarnings>
              <source>${maven.compiler.argument.source}</source>
              <target>${maven.compiler.argument.target}</target>
              <testSource>${maven.compiler.argument.testSource}</testSource>
              <testTarget>${maven.compiler.argument.testTarget}</testTarget>
              <compilerArgs>
                <arg>-Xlint:unchecked</arg>
              </compilerArgs>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>${version.dependency.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>${version.deploy.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>${version.ear.plugin}</version>
            <dependencies>
              <dependency>
                <groupId>org.codehaus.plexus</groupId>
                <artifactId>plexus-archiver</artifactId>
                <version>${version.plexus.archiver}</version>
              </dependency>
            </dependencies>
            <configuration>
              <archive>
                <index>true</index>
                <manifest>
                  <addDefaultSpecificationEntries>
                    true
                  </addDefaultSpecificationEntries>
                  <addDefaultImplementationEntries>
                    true
                  </addDefaultImplementationEntries>
                </manifest>
                <manifestEntries>
                  <Implementation-URL>${project.url}</Implementation-URL>
                  <Java-Version>${java.version}</Java-Version>
                  <Java-Vendor>${java.vendor}</Java-Vendor>
                  <Os-Name>${os.name}</Os-Name>
                  <Os-Arch>${os.arch}</Os-Arch>
                  <Os-Version>${os.version}</Os-Version>
                  <Scm-Url>${project.scm.url}</Scm-Url>
                  <Scm-Connection>${project.scm.connection}</Scm-Connection>
                  <Scm-Revision>${buildNumber}</Scm-Revision>
                </manifestEntries>
              </archive>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ejb-plugin</artifactId>
            <version>${version.ejb.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>${version.enforcer.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>${version.exec.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-failsafe-plugin</artifactId>
            <version>${version.failsafe.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>findbugs-maven-plugin</artifactId>
            <version>${version.findbugs.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>${version.gpg.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-help-plugin</artifactId>
            <version>${version.help.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.jboss.maven.plugins</groupId>
            <artifactId>maven-injection-plugin</artifactId>
            <version>${version.injection.plugin}</version>
            <executions>
              <execution>
                <phase>compile</phase>
                <goals>
                  <goal>bytecode</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>${version.install.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>${version.jar.plugin}</version>
            <configuration>
              <archive>
                <index>true</index>
                <manifest>
                  <addDefaultSpecificationEntries>
                    true
                  </addDefaultSpecificationEntries>
                  <addDefaultImplementationEntries>
                    true
                  </addDefaultImplementationEntries>
                </manifest>
                <manifestEntries>
                  <Implementation-URL>${project.url}</Implementation-URL>
                  <Java-Version>${java.version}</Java-Version>
                  <Scm-Url>${project.scm.url}</Scm-Url>
                  <Scm-Connection>${project.scm.connection}</Scm-Connection>
                  <Scm-Revision>${buildNumber}</Scm-Revision>
                </manifestEntries>
              </archive>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>${version.javadoc.plugin}</version>
            <configuration>
              <header><![CDATA[<b>${project.name} ${project.version}</b>]]></header>
              <footer><![CDATA[<b>${project.name} ${project.version}</b>]]></footer>
              <archive>
                <index>true</index>
                <manifest>
                  <addDefaultSpecificationEntries>
                    true
                  </addDefaultSpecificationEntries>
                  <addDefaultImplementationEntries>
                    true
                  </addDefaultImplementationEntries>
                </manifest>
                <manifestEntries>
                  <Implementation-URL>${project.url}</Implementation-URL>
                  <Java-Version>${java.version}</Java-Version>
                  <Java-Vendor>${java.vendor}</Java-Vendor>
                  <Os-Name>${os.name}</Os-Name>
                  <Os-Arch>${os.arch}</Os-Arch>
                  <Os-Version>${os.version}</Os-Version>
                  <Scm-Url>${project.scm.url}</Scm-Url>
                  <Scm-Connection>${project.scm.connection}</Scm-Connection>
                  <Scm-Revision>${buildNumber}</Scm-Revision>
                </manifestEntries>
              </archive>
              <additionalOptions>${javadoc.additional.params}</additionalOptions>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>javancss-maven-plugin</artifactId>
            <version>${version.javancss.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jxr-plugin</artifactId>
            <version>${version.jxr.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>license-maven-plugin</artifactId>
            <version>${version.license.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-plugin-plugin</artifactId>
            <version>${version.plugin.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>${version.pmd.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-rar-plugin</artifactId>
            <version>${version.rar.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>${version.release.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>${version.resources.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>${version.shade.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>${version.site.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.sonarsource.scanner.maven</groupId>
            <artifactId>sonar-maven-plugin</artifactId>
            <version>${version.sonar.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>${version.source.plugin}</version>
            <configuration>
              <archive>
                <index>true</index>
                <manifest>
                  <addDefaultSpecificationEntries>
                    true
                  </addDefaultSpecificationEntries>
                  <addDefaultImplementationEntries>
                    true
                  </addDefaultImplementationEntries>
                </manifest>
                <manifestEntries>
                  <Implementation-URL>${project.url}</Implementation-URL>
                  <Java-Version>${java.version}</Java-Version>
                  <Java-Vendor>${java.vendor}</Java-Vendor>
                  <Os-Name>${os.name}</Os-Name>
                  <Os-Arch>${os.arch}</Os-Arch>
                  <Os-Version>${os.version}</Os-Version>
                  <Scm-Url>${project.scm.url}</Scm-Url>
                  <Scm-Connection>${project.scm.connection}</Scm-Connection>
                  <Scm-Revision>${buildNumber}</Scm-Revision>
                </manifestEntries>
              </archive>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${version.surefire.plugin}</version>
            <configuration>
              <trimStackTrace>false</trimStackTrace>
              <systemPropertyVariables>
                <java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
              </systemPropertyVariables>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-report-plugin</artifactId>
            <version>${version.surefire-report.plugin}</version>
          </plugin>
          <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>versions-maven-plugin</artifactId>
            <version>${version.versions.plugin}</version>
            <configuration>
              <generateBackupPoms>false</generateBackupPoms>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>${version.war.plugin}</version>
            <configuration>
              <archive>
                <index>true</index>
                <manifest>
                  <addDefaultSpecificationEntries>
                    true
                  </addDefaultSpecificationEntries>
                  <addDefaultImplementationEntries>
                    true
                  </addDefaultImplementationEntries>
                </manifest>
                <manifestEntries>
                  <Implementation-URL>${project.url}</Implementation-URL>
                  <Java-Version>${java.version}</Java-Version>
                  <Java-Vendor>${java.vendor}</Java-Vendor>
                  <Os-Name>${os.name}</Os-Name>
                  <Os-Arch>${os.arch}</Os-Arch>
                  <Os-Version>${os.version}</Os-Version>
                  <Scm-Url>${project.scm.url}</Scm-Url>
                  <Scm-Connection>${project.scm.connection}</Scm-Connection>
                  <Scm-Revision>${buildNumber}</Scm-Revision>
                </manifestEntries>
              </archive>
              <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
          </plugin>
          <plugin>
            <groupId>org.zanata</groupId>
            <artifactId>zanata-maven-plugin</artifactId>
            <version>${version.zanata.plugin}</version>
          </plugin>

          <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
          <plugin>
            <groupId>org.eclipse.m2e</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>${version.org.eclipse.m2e.lifecycle-mapping}</version>
            <configuration>
              <lifecycleMappingMetadata>
                <pluginExecutions>
                  <!-- Configure m2e to execute the manifest goal of the bundle plugin, if present. -->
                  <pluginExecution>
                    <pluginExecutionFilter>
                      <groupId>org.apache.felix</groupId>
                      <artifactId>maven-bundle-plugin</artifactId>
                      <versionRange>[2.3.7,)</versionRange>
                      <goals>
                        <goal>manifest</goal>
                      </goals>
                    </pluginExecutionFilter>
                    <action>
                      <execute />
                    </action>
                  </pluginExecution>
                  <!-- Configure m2e to ignore the Maven enforcer plugin -->
                  <pluginExecution>
                    <pluginExecutionFilter>
                      <groupId>org.apache.maven.plugins</groupId>
                      <artifactId>maven-enforcer-plugin</artifactId>
                      <versionRange>[1.3.1,)</versionRange>
                      <goals>
                        <goal>enforce</goal>
                      </goals>
                    </pluginExecutionFilter>
                    <action>
                      <ignore />
                    </action>
                  </pluginExecution>
                  <!-- Configure m2e to ignore the buildnumber-maven-plugin. -->
                  <pluginExecution>
                    <pluginExecutionFilter>
                      <groupId>org.codehaus.mojo</groupId>
                      <artifactId>buildnumber-maven-plugin</artifactId>
                      <versionRange>[1.0.0,)</versionRange>
                      <goals>
                        <goal>create</goal>
                      </goals>
                    </pluginExecutionFilter>
                    <action>
                      <ignore />
                    </action>
                  </pluginExecution>
                </pluginExecutions>
              </lifecycleMappingMetadata>
            </configuration>
          </plugin>

        </plugins>

      </pluginManagement>

      <plugins>

        <!-- Check for the minimum version of Java and Maven.  Runs during the validate phase. -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-enforcer-plugin</artifactId>
          <executions>
            <execution>
              <id>enforce-java-version</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <bannedRepositories>
                      <message>To build this project, don't use maven repositories over HTTP. Please use HTTPS in your settings.xml or run the build with property insecure.repositories=WARN</message>
                      <level>${insecure.repositories}</level>
                      <bannedRepositories>
                          <bannedRepository>http://*</bannedRepository>
                      </bannedRepositories>
                      <bannedPluginRepositories>
                          <bannedPluginRepository>http://*</bannedPluginRepository>
                      </bannedPluginRepositories>
                  </bannedRepositories>
                  <requireJavaVersion>
                    <message>To build this project JDK ${jdk.min.version} (or greater) is required. Please install it.</message>
                    <version>${jdk.min.version}</version>
                  </requireJavaVersion>
                </rules>
              </configuration>
            </execution>
            <execution>
              <id>enforce-maven-version</id>
              <goals>
                <goal>enforce</goal>
              </goals>
              <configuration>
                <rules>
                  <requireMavenVersion>
                    <message>To build this project Maven ${maven.min.version} (or greater) is required. Please install it.</message>
                    <version>${maven.min.version}</version>
                  </requireMavenVersion>
                </rules>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <!-- Set properties containing the scm revision -->
        <plugin>
          <groupId>org.codehaus.mojo</groupId>
          <artifactId>buildnumber-maven-plugin</artifactId>
          <executions>
            <execution>
              <id>get-scm-revision</id>
              <phase>initialize</phase>
              <goals>
                <goal>create</goal>
              </goals>
              <configuration>
                <doCheck>false</doCheck>
                <doUpdate>false</doUpdate>
                <revisionOnScmFailure>UNKNOWN</revisionOnScmFailure>
                <getRevisionOnlyOnce>true</getRevisionOnlyOnce>
              </configuration>
            </execution>
          </executions>
        </plugin>

        <!-- Attach source jar to all builds.  Runs during the package phase.-->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <executions>
            <execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
        </plugin>

      </plugins>

    </build>

    <profiles>

      <!--
          The profile jboss-release must be active when a project is released.  The configuration
          in this POM will automatically call this profile if using the maven-release-plugin.
          If the maven-release-plugin is not used during the release, this profile must
          be manually activated.
       -->
      <profile>
        <id>jboss-release</id>
        <build>
          <plugins>
            <!-- Create a source-release artifact that contains the fully buildable
                 project directory source structure.  This should be released to
                 the Maven repository for each JBoss project release. -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-assembly-plugin</artifactId>
              <version>${version.assembly.plugin}</version>
              <dependencies>
                <dependency>
                  <groupId>org.apache.apache.resources</groupId>
                  <artifactId>apache-source-release-assembly-descriptor</artifactId>
                  <version>1.7</version>
                </dependency>
              </dependencies>
              <executions>
                <execution>
                  <id>source-release-assembly</id>
                  <phase>package</phase>
                  <goals>
                    <goal>single</goal>
                  </goals>
                  <configuration>
                    <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
                    <descriptorRefs>
                      <descriptorRef>${sourceReleaseAssemblyDescriptor}</descriptorRef>
                    </descriptorRefs>
                    <tarLongFileMode>gnu</tarLongFileMode>
                  </configuration>
                </execution>
              </executions>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-deploy-plugin</artifactId>
              <configuration>
                <altReleaseDeploymentRepository>${jboss.releases.repo.id}::${jboss.releases.repo.url}</altReleaseDeploymentRepository>
                <altSnapshotDeploymentRepository>${jboss.snapshots.repo.id}::${jboss.snapshots.repo.url}</altSnapshotDeploymentRepository>
              </configuration>
            </plugin>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-javadoc-plugin</artifactId>
              <executions>
                <execution>
                  <id>attach-javadocs</id>
                  <goals>
                    <goal>jar</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </build>
      </profile>
      <!--
          This profile can be activated to generate gpg signatures for all build
          artifacts.  This profile requires that the properties "gpg.keyname"
          and "gpg.passphrase" are available to the current build.
      -->
      <profile>
        <id>gpg-sign</id>
        <build>
          <plugins>
            <!-- This will sign the artifact, the POM, and all attached artifacts -->
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-gpg-plugin</artifactId>
              <configuration>
                <useAgent>true</useAgent>
              </configuration>
              <executions>
                <execution>
                  <goals>
                    <goal>sign</goal>
                  </goals>
                </execution>
              </executions>
            </plugin>
          </plugins>
        </build>
      </profile>

        <!-- MR JAR support begins here -->

        <!-- Release flags -->

        <profile>
            <id>compile-java11-release-flag</id>
            <activation>
                <file>
                    <exists>${basedir}/build-release-11</exists>
                </file>
                <jdk>[11,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-compile</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>11</release>
                                </configuration>
                            </execution>
                            <execution>
                                <id>default-testCompile</id>
                                <phase>test-compile</phase>
                                <goals>
                                    <goal>testCompile</goal>
                                </goals>
                                <configuration>
                                    <release>11</release>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default</id>
                                <configuration>
                                    <source>11</source>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>compile-java17-release-flag</id>
            <activation>
                <file>
                    <exists>${basedir}/build-release-17</exists>
                </file>
                <jdk>[17,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-compile</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>17</release>
                                </configuration>
                            </execution>
                            <execution>
                                <id>default-testCompile</id>
                                <phase>test-compile</phase>
                                <goals>
                                    <goal>testCompile</goal>
                                </goals>
                                <configuration>
                                    <release>17</release>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default</id>
                                <configuration>
                                    <source>17</source>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>compile-java21-release-flag</id>
            <activation>
                <file>
                    <exists>${basedir}/build-release-21</exists>
                </file>
                <jdk>[21,)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-compile</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>21</release>
                                </configuration>
                            </execution>
                            <execution>
                                <id>default-testCompile</id>
                                <phase>test-compile</phase>
                                <goals>
                                    <goal>testCompile</goal>
                                </goals>
                                <configuration>
                                    <release>21</release>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default</id>
                                <configuration>
                                    <source>21</source>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 12 or later is used to test a project that supports Java 11 -->
        <profile>
            <id>java11-test</id>
            <activation>
                <jdk>[12,)</jdk>
                <property>
                    <name>java11.home</name>
                </property>
                <file>
                    <exists>${basedir}/build-test-java11</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>java11-test</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>test</goal>
                                </goals>
                                <configuration>
                                    <jvm>${java11.home}/bin/java</jvm>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 12 or later is used to build -->
        <profile>
            <id>java12-mr-build</id>
            <activation>
                <jdk>[12,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java12</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java12</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>12</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java12</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 13 or later is used to build -->
        <profile>
            <id>java13-mr-build</id>
            <activation>
                <jdk>[13,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java13</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java13</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>13</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java13</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 14 or later is used to build -->
        <profile>
            <id>java14-mr-build</id>
            <activation>
                <jdk>[14,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java14</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java14</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>14</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java14</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 15 or later is used to build -->
        <profile>
            <id>java15-mr-build</id>
            <activation>
                <jdk>[15,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java15</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java15</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>15</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java15</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 16 or later is used to build -->
        <profile>
            <id>java16-mr-build</id>
            <activation>
                <jdk>[16,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java16</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java16</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>16</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java16</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 17 or later is used to build -->
        <profile>
            <id>java17-mr-build</id>
            <activation>
                <jdk>[17,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java17</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java17</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>17</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java17</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 18 or later is used to test a project that supports Java 17 -->
        <profile>
            <id>java17-test</id>
            <activation>
                <jdk>[18,)</jdk>
                <property>
                    <name>java17.home</name>
                </property>
                <file>
                    <exists>${basedir}/build-test-java17</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>java17-test</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>test</goal>
                                </goals>
                                <configuration>
                                    <jvm>${java17.home}/bin/java</jvm>
                                    <classesDirectory>${project.build.directory}/classes/META-INF/versions/17
                                    </classesDirectory>
                                    <additionalClasspathElements>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/16
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/15
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/14
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/13
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/12
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>${project.build.outputDirectory}
                                        </additionalClasspathElement>
                                    </additionalClasspathElements>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when the baseline JDK version running tests is Java 17 -->
        <profile>
            <id>java17-test-classpath</id>
            <activation>
                <jdk>[17,18)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-test</id>
                                <configuration>
                                    <classesDirectory>${project.build.outputDirectory}/META-INF/versions/17
                                    </classesDirectory>
                                    <additionalClasspathElements>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/16
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/15
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/14
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/13
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/12
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>${project.build.outputDirectory}
                                        </additionalClasspathElement>
                                    </additionalClasspathElements>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 18 or later is used to build -->
        <profile>
            <id>java18-mr-build</id>
            <activation>
                <jdk>[18,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java18</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java18</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>18</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java18</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 19 or later is used to build -->
        <profile>
            <id>java19-mr-build</id>
            <activation>
                <jdk>[19,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java19</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java19</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>19</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java19</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 20 or later is used to build -->
        <profile>
            <id>java20-mr-build</id>
            <activation>
                <jdk>[20,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java20</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java20</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>20</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java20</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 21 or later is used to build -->
        <profile>
            <id>java21-mr-build</id>
            <activation>
                <jdk>[21,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java21</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java21</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>21</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java21</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 22 or later is used to test a project that supports Java 21 -->
        <profile>
            <id>java21-test</id>
            <activation>
                <jdk>[22,)</jdk>
                <property>
                    <name>java21.home</name>
                </property>
                <file>
                    <exists>${basedir}/build-test-java21</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>java21-test</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>test</goal>
                                </goals>
                                <configuration>
                                    <jvm>${java21.home}/bin/java</jvm>
                                    <classesDirectory>${project.build.directory}/classes/META-INF/versions/21
                                    </classesDirectory>
                                    <additionalClasspathElements>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/20
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/19
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/18
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/17
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/16
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/15
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/14
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/13
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/12
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>${project.build.outputDirectory}
                                        </additionalClasspathElement>
                                    </additionalClasspathElements>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when the baseline JDK version running tests is Java 21 -->
        <profile>
            <id>java21-test-classpath</id>
            <activation>
                <jdk>[21,22)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-test</id>
                                <configuration>
                                    <classesDirectory>${project.build.outputDirectory}/META-INF/versions/21
                                    </classesDirectory>
                                    <additionalClasspathElements>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/20
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/19
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/18
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/17
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/16
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/15
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/14
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/13
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/12
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>${project.build.outputDirectory}
                                        </additionalClasspathElement>
                                    </additionalClasspathElements>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 22 or later is used to build -->
        <profile>
            <id>java22-mr-build</id>
            <activation>
                <jdk>[22,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java22</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java22</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>22</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java22</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 23 or later is used to build -->
        <profile>
            <id>java23-mr-build</id>
            <activation>
                <jdk>[23,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java23</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java23</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>23</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java23</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when the baseline JDK version running tests is Java 23 -->
        <profile>
            <id>java23-test-classpath</id>
            <activation>
                <jdk>[23,24)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-test</id>
                                <configuration>
                                    <classesDirectory>${project.build.outputDirectory}/META-INF/versions/23
                                    </classesDirectory>
                                    <additionalClasspathElements>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/22
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/21
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/20
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/19
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/18
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/17
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/16
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/15
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/14
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/13
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/12
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>${project.build.outputDirectory}
                                        </additionalClasspathElement>
                                    </additionalClasspathElements>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 24 or later is used to build -->
        <profile>
            <id>java24-mr-build</id>
            <activation>
                <jdk>[24,)</jdk>
                <file>
                    <exists>${basedir}/src/main/java24</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>compile-java24</id>
                                <phase>compile</phase>
                                <goals>
                                    <goal>compile</goal>
                                </goals>
                                <configuration>
                                    <release>24</release>
                                    <buildDirectory>${project.build.directory}</buildDirectory>
                                    <compileSourceRoots>${project.basedir}/src/main/java24</compileSourceRoots>
                                    <multiReleaseOutput>true</multiReleaseOutput>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-jar-plugin</artifactId>
                        <configuration>
                            <archive>
                                <manifestEntries>
                                    <Multi-Release>true</Multi-Release>
                                </manifestEntries>
                            </archive>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when Java 25 or later is used to test a project that supports Java 24 -->
        <profile>
            <id>java24-test</id>
            <activation>
                <jdk>[25,)</jdk>
                <property>
                    <name>java24.home</name>
                </property>
                <file>
                    <exists>${basedir}/build-test-java24</exists>
                </file>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>java24-test</id>
                                <phase>test</phase>
                                <goals>
                                    <goal>test</goal>
                                </goals>
                                <configuration>
                                    <jvm>${java24.home}/bin/java</jvm>
                                    <classesDirectory>${project.build.directory}/classes/META-INF/versions/24
                                    </classesDirectory>
                                    <additionalClasspathElements>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/23
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/22
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/21
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/20
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/19
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/18
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/17
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/16
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/15
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/14
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/13
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/12
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>${project.build.outputDirectory}
                                        </additionalClasspathElement>
                                    </additionalClasspathElements>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- This profile is activated when the baseline JDK version running tests is Java 24 -->
        <profile>
            <id>java24-test-classpath</id>
            <activation>
                <jdk>[24,25)</jdk>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>default-test</id>
                                <configuration>
                                    <classesDirectory>${project.build.outputDirectory}/META-INF/versions/24
                                    </classesDirectory>
                                    <additionalClasspathElements>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/23
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/22
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/21
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/20
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/19
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/18
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/17
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/16
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/15
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/14
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/13
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>
                                            ${project.build.directory}/classes/META-INF/versions/12
                                        </additionalClasspathElement>
                                        <additionalClasspathElement>${project.build.outputDirectory}
                                        </additionalClasspathElement>
                                    </additionalClasspathElements>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <!--
     * When adding new layers:
     *   1. Copy the javaXX-mr-build profile for the new version
     *   2. Copy the javaXX-test-classpath profile for the new version, make sure it is updated for the new version
     *   3. If LTS, copy the javaXX-test profile for the new version
    -->

</project>
