smallrye-build-parent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-build-parent</artifactId>
<version>50</version>
</dependency><?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" child.project.url.inherit.append.path="false">
<modelVersion>4.0.0</modelVersion>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-build-parent</artifactId>
<version>50</version>
<name>SmallRye: Build Parent</name>
<description>SmallRye Build Parent POM</description>
<url>https://smallrye.io</url>
<inceptionYear>2018</inceptionYear>
<packaging>pom</packaging>
<modules>
<module>full-parent</module>
</modules>
<properties>
<!-- Overall version for surefire/failsafe -->
<version.surefire>3.5.6</version.surefire>
<!-- Plugin versions -->
<version.clean.plugin>3.5.0</version.clean.plugin>
<version.compiler.plugin>3.15.0</version.compiler.plugin>
<version.resources.plugin>3.5.0</version.resources.plugin>
<version.gpg.plugin>3.2.8</version.gpg.plugin>
<version.install.plugin>3.1.4</version.install.plugin>
<version.jar.plugin>3.5.0</version.jar.plugin>
<version.javadoc.plugin>3.12.0</version.javadoc.plugin>
<version.nexus.staging.plugin>1.7.0</version.nexus.staging.plugin>
<version.release.plugin>3.3.1</version.release.plugin>
<version.deploy.plugin>3.1.4</version.deploy.plugin>
<version.source.plugin>3.4.0</version.source.plugin>
<version.site.plugin>3.22.0</version.site.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.dependency.plugin>3.11.0</version.dependency.plugin>
<version.smallrye.code.rules.plugin>2</version.smallrye.code.rules.plugin>
<version.formatter.plugin>2.29.0</version.formatter.plugin>
<version.impsort.plugin>1.12.0</version.impsort.plugin>
<version.jacoco.plugin>0.8.15</version.jacoco.plugin>
<version.buildnumber.plugin>3.3.0</version.buildnumber.plugin>
<version.versions.plugin>2.21.0</version.versions.plugin>
<version.org.jboss.logging-processor>3.0.4.Final</version.org.jboss.logging-processor>
<version.javaparser>3.28.2</version.javaparser>
<!-- Cross plugins settings -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- Sonar settings -->
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
<sonar.organization>smallrye</sonar.organization>
<!-- maven-compiler-plugin -->
<maven.compiler.target>17</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.release>17</maven.compiler.release>
<maven.compiler.testTarget>${maven.compiler.target}</maven.compiler.testTarget>
<maven.compiler.testSource>${maven.compiler.source}</maven.compiler.testSource>
<!-- Special version for MR JAR jdk-misc artifact -->
<version.jdk-misc>3.Final</version.jdk-misc>
<format.skip>false</format.skip>
</properties>
<licenses>
<license>
<name>Apache License, Version 2.0</name>
<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
<distribution>repo</distribution>
</license>
</licenses>
<issueManagement>
<system>GitHub</system>
<url>https://github.com/smallrye/smallrye-parent/issues</url>
</issueManagement>
<developers>
<developer>
<id>radcortez</id>
<name>Roberto Cortez</name>
<email>radcortez@redhat.com</email>
<organization>Red Hat</organization>
<organizationUrl>https://www.redhat.com/en</organizationUrl>
</developer>
</developers>
<scm>
<connection>scm:git:git@github.com:smallrye/smallrye-parent.git</connection>
<developerConnection>scm:git:git@github.com:smallrye/smallrye-parent.git</developerConnection>
<url>https://github.com/smallrye/smallrye-parent</url>
<tag>50</tag>
</scm>
<distributionManagement>
<snapshotRepository>
<id>oss.sonatype</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository>
<repository>
<id>oss.sonatype</id>
<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository>
</distributionManagement>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>${version.clean.plugin}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${version.compiler.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-gpg-plugin</artifactId>
<version>${version.gpg.plugin}</version>
<configuration>
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</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>
<detectMultiReleaseJar>true</detectMultiReleaseJar>
<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>
<!-- Support for @apiNote, @implSpec, @implNote -->
<tags>
<tag>
<name>apiNote</name>
<placement>a</placement>
<head>API Note:</head>
</tag>
<tag>
<name>implSpec</name>
<placement>a</placement>
<head>Implementation Requirements:</head>
</tag>
<tag>
<name>implNote</name>
<placement>a</placement>
<head>Implementation Note:</head>
</tag>
<tag>
<name>param</name>
</tag>
<tag>
<name>return</name>
</tag>
<tag>
<name>throws</name>
</tag>
<tag>
<name>since</name>
</tag>
<tag>
<name>version</name>
</tag>
<tag>
<name>serialData</name>
</tag>
<tag>
<name>see</name>
</tag>
</tags>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>${version.source.plugin}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>${version.site.plugin}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${version.surefire.plugin}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>${version.surefire-report.plugin}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${version.failsafe.plugin}</version>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<version>${version.nexus.staging.plugin}</version>
<configuration>
<stagingProgressTimeoutMinutes>15</stagingProgressTimeoutMinutes>
</configuration>
</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-dependency-plugin</artifactId>
<version>${version.dependency.plugin}</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${version.jacoco.plugin}</version>
<configuration>
<propertyName>jacocoArgLine</propertyName>
<append>true</append>
<excludes>
<exclude>META-INF/**</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<phase>generate-test-resources</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<version>${version.formatter.plugin}</version>
<dependencies>
<dependency>
<groupId>io.smallrye</groupId>
<artifactId>smallrye-code-rules</artifactId>
<version>${version.smallrye.code.rules.plugin}</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<version>${version.impsort.plugin}</version>
<dependencies>
<dependency>
<groupId>com.github.javaparser</groupId>
<artifactId>javaparser-core</artifactId>
<version>${version.javaparser}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
<!-- Ensure that the logging generator does not generate invalid annotations -->
<configuration>
<compilerArgs>
<arg>-Aorg.jboss.logging.tools.addGeneratedAnnotation=false</arg>
</compilerArgs>
<annotationProcessorPaths>
<path>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging-processor</artifactId>
<version>${version.org.jboss.logging-processor}</version>
</path>
</annotationProcessorPaths>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>${version.release.plugin}</version>
<configuration>
<autoVersionSubmodules>true</autoVersionSubmodules>
<tagNameFormat>@{project.version}</tagNameFormat>
<preparationGoals>verify</preparationGoals>
<pushChanges>false</pushChanges>
<localCheckout>true</localCheckout>
<remoteTagging>false</remoteTagging>
<arguments>-DskipTests ${release.arguments}</arguments>
</configuration>
</plugin>
<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>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<version>${version.formatter.plugin}</version>
<configuration>
<configFile>io/smallrye/coderules/eclipse-format.xml</configFile>
<skip>${format.skip}</skip>
</configuration>
<executions>
<execution>
<id>format-sources</id>
<phase>process-sources</phase>
<goals>
<goal>format</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<version>${version.impsort.plugin}</version>
<configuration>
<groups>java.,javax.,jakarta.,org.,com.</groups>
<staticGroups>*</staticGroups>
<skip>${format.skip}</skip>
<removeUnused>true</removeUnused>
</configuration>
<executions>
<execution>
<id>sort-imports</id>
<goals>
<goal>sort</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>${version.buildnumber.plugin}</version>
<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>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>${version.versions.plugin}</version>
<configuration>
<generateBackupPoms>false</generateBackupPoms>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<serverId>oss.sonatype</serverId>
<autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- MR JAR support starts here-->
<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>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<executions>
<execution>
<id>sort-imports</id>
<goals>
<goal>sort</goal>
</goals>
<configuration>
<compliance>17</compliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<executions>
<execution>
<id>format-sources</id>
<phase>process-sources</phase>
<goals>
<goal>format</goal>
</goals>
<configuration>
<compilerCompliance>17</compilerCompliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<source>17</source>
</configuration>
</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>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<executions>
<execution>
<id>sort-imports</id>
<goals>
<goal>sort</goal>
</goals>
<configuration>
<compliance>21</compliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<executions>
<execution>
<id>format-sources</id>
<phase>process-sources</phase>
<goals>
<goal>format</goal>
</goals>
<configuration>
<compilerCompliance>21</compilerCompliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<source>21</source>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>compile-java25-release-flag</id>
<activation>
<file>
<exists>${basedir}/build-release-25</exists>
</file>
<jdk>[25,)</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>25</release>
</configuration>
</execution>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<release>25</release>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<executions>
<execution>
<id>sort-imports</id>
<goals>
<goal>sort</goal>
</goals>
<configuration>
<compliance>25</compliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<executions>
<execution>
<id>format-sources</id>
<phase>process-sources</phase>
<goals>
<goal>format</goal>
</goals>
<configuration>
<compilerCompliance>25</compilerCompliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-javadoc-plugin</artifactId>
<configuration>
<source>25</source>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<!-- -->
<!-- Java 17 support -->
<!-- -->
<!-- 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.outputDirectory}</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</execution>
</executions>
</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>
<compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java17</compileSourceRoot>
</compileSourceRoots>
<multiReleaseOutput>true</multiReleaseOutput>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<executions>
<execution>
<id>sort-imports-java17</id>
<goals>
<goal>sort</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java17</sourceDirectory>
<compliance>17</compliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<executions>
<execution>
<id>format-sources-java17</id>
<phase>process-sources</phase>
<goals>
<goal>format</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java17</sourceDirectory>
<compilerCompliance>17</compilerCompliance>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- -->
<!-- Java 18 support -->
<!-- -->
<!-- This profile is activated when the baseline JDK version running tests is Java 18 -->
<profile>
<id>java18-test-classpath</id>
<activation>
<jdk>[18,19)</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/18</classesDirectory>
<additionalClasspathElements>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</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 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.outputDirectory}/META-INF/versions/17</classesDirectory>
<additionalClasspathElements>
<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>
<compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java18</compileSourceRoot>
</compileSourceRoots>
<multiReleaseOutput>true</multiReleaseOutput>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<executions>
<execution>
<id>sort-imports-java18</id>
<goals>
<goal>sort</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java18</sourceDirectory>
<compliance>18</compliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<executions>
<execution>
<id>format-sources-java18</id>
<phase>process-sources</phase>
<goals>
<goal>format</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java18</sourceDirectory>
<compilerCompliance>18</compilerCompliance>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- -->
<!-- Java 19 support -->
<!-- -->
<!-- This profile is activated when the baseline JDK version running tests is Java 19 -->
<profile>
<id>java19-test-classpath</id>
<activation>
<jdk>[19,20)</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/19</classesDirectory>
<additionalClasspathElements>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/18</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- This profile is activated when Java 19 or later is used to test a project that supports Java 18-->
<profile>
<id>java18-test</id>
<activation>
<jdk>[19,)</jdk>
<property>
<name>java18.home</name>
</property>
<file>
<exists>${basedir}/build-test-java18</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>java18-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<jvm>${java18.home}/bin/java</jvm>
<classesDirectory>${project.build.outputDirectory}/META-INF/versions/18</classesDirectory>
<additionalClasspathElements>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</execution>
</executions>
</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>
<compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java19</compileSourceRoot>
</compileSourceRoots>
<multiReleaseOutput>true</multiReleaseOutput>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<executions>
<execution>
<id>sort-imports-java19</id>
<goals>
<goal>sort</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java19</sourceDirectory>
<compliance>19</compliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<executions>
<execution>
<id>format-sources-java19</id>
<phase>process-sources</phase>
<goals>
<goal>format</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java19</sourceDirectory>
<compilerCompliance>19</compilerCompliance>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- -->
<!-- Java 20 support -->
<!-- -->
<!-- This profile is activated when the baseline JDK version running tests is Java 20 -->
<profile>
<id>java20-test-classpath</id>
<activation>
<jdk>[20,21)</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/20</classesDirectory>
<additionalClasspathElements>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/19</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/18</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- This profile is activated when Java 20 or later is used to test a project that supports Java 19-->
<profile>
<id>java19-test</id>
<activation>
<jdk>[20,)</jdk>
<property>
<name>java19.home</name>
</property>
<file>
<exists>${basedir}/build-test-java19</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>java19-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<jvm>${java19.home}/bin/java</jvm>
<classesDirectory>${project.build.outputDirectory}/META-INF/versions/19</classesDirectory>
<additionalClasspathElements>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/18</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</execution>
</executions>
</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>
<compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java20</compileSourceRoot>
</compileSourceRoots>
<multiReleaseOutput>true</multiReleaseOutput>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<executions>
<execution>
<id>sort-imports-java20</id>
<goals>
<goal>sort</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java20</sourceDirectory>
<compliance>20</compliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<executions>
<execution>
<id>format-sources-java20</id>
<phase>process-sources</phase>
<goals>
<goal>format</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java20</sourceDirectory>
<compilerCompliance>20</compilerCompliance>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- -->
<!-- Java 21 support -->
<!-- -->
<!-- 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.outputDirectory}/META-INF/versions/20</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/19</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/18</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- This profile is activated when Java 21 or later is used to test a project that supports Java 20-->
<profile>
<id>java20-test</id>
<activation>
<jdk>[21,)</jdk>
<property>
<name>java20.home</name>
</property>
<file>
<exists>${basedir}/build-test-java20</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>java20-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<jvm>${java20.home}/bin/java</jvm>
<classesDirectory>${project.build.outputDirectory}/META-INF/versions/20</classesDirectory>
<additionalClasspathElements>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/19</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/18</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</execution>
</executions>
</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>
<compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java21</compileSourceRoot>
</compileSourceRoots>
<multiReleaseOutput>true</multiReleaseOutput>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<executions>
<execution>
<id>sort-imports-java21</id>
<goals>
<goal>sort</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java21</sourceDirectory>
<compliance>21</compliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<executions>
<execution>
<id>format-sources-java21</id>
<phase>process-sources</phase>
<goals>
<goal>format</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java21</sourceDirectory>
<compilerCompliance>21</compilerCompliance>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- -->
<!-- Java 22 support -->
<!-- -->
<!-- This profile is activated when the baseline JDK version running tests is Java 22 -->
<profile>
<id>java22-test-classpath</id>
<activation>
<jdk>[22,23)</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/22</classesDirectory>
<additionalClasspathElements>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/21</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/20</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/19</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/18</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</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 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.outputDirectory}/META-INF/versions/21</classesDirectory>
<additionalClasspathElements>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/20</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/19</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/18</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</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>
<compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java22</compileSourceRoot>
</compileSourceRoots>
<multiReleaseOutput>true</multiReleaseOutput>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<executions>
<execution>
<id>sort-imports-java22</id>
<goals>
<goal>sort</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java22</sourceDirectory>
<compliance>22</compliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<executions>
<execution>
<id>format-sources-java22</id>
<phase>process-sources</phase>
<goals>
<goal>format</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java22</sourceDirectory>
<compilerCompliance>22</compilerCompliance>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- -->
<!-- Java 23 support -->
<!-- -->
<!-- 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.outputDirectory}/META-INF/versions/22</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/21</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/20</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/19</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/18</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- This profile is activated when Java 23 or later is used to test a project that supports Java 22-->
<profile>
<id>java22-test</id>
<activation>
<jdk>[23,)</jdk>
<property>
<name>java22.home</name>
</property>
<file>
<exists>${basedir}/build-test-java22</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>java22-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<jvm>${java22.home}/bin/java</jvm>
<classesDirectory>${project.build.outputDirectory}/META-INF/versions/22</classesDirectory>
<additionalClasspathElements>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/21</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/20</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/19</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/18</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}</additionalClasspathElement>
</additionalClasspathElements>
</configuration>
</execution>
</executions>
</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>
<compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java23</compileSourceRoot>
</compileSourceRoots>
<multiReleaseOutput>true</multiReleaseOutput>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<executions>
<execution>
<id>sort-imports-java23</id>
<goals>
<goal>sort</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java23</sourceDirectory>
<compliance>23</compliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<executions>
<execution>
<id>format-sources-java23</id>
<phase>process-sources</phase>
<goals>
<goal>format</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java23</sourceDirectory>
<compilerCompliance>23</compilerCompliance>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- -->
<!-- Java 24 support -->
<!-- -->
<!-- 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.outputDirectory}/META-INF/versions/23</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/22</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/21</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/20</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/19</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/18</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</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 test a project that supports Java 23-->
<profile>
<id>java23-test</id>
<activation>
<jdk>[24,)</jdk>
<property>
<name>java23.home</name>
</property>
<file>
<exists>${basedir}/build-test-java23</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<executions>
<execution>
<id>java23-test</id>
<phase>test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<jvm>${java23.home}/bin/java</jvm>
<classesDirectory>${project.build.outputDirectory}/META-INF/versions/23</classesDirectory>
<additionalClasspathElements>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/22</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/21</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/20</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/19</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/18</additionalClasspathElement>
<additionalClasspathElement>${project.build.outputDirectory}/META-INF/versions/17</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>
<compileSourceRoots>
<compileSourceRoot>${project.basedir}/src/main/java24</compileSourceRoot>
</compileSourceRoots>
<multiReleaseOutput>true</multiReleaseOutput>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code</groupId>
<artifactId>impsort-maven-plugin</artifactId>
<executions>
<execution>
<id>sort-imports-java24</id>
<goals>
<goal>sort</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java24</sourceDirectory>
<compliance>24</compliance>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>net.revelc.code.formatter</groupId>
<artifactId>formatter-maven-plugin</artifactId>
<executions>
<execution>
<id>format-sources-java24</id>
<phase>process-sources</phase>
<goals>
<goal>format</goal>
</goals>
<configuration>
<sourceDirectory>${project.basedir}/src/main/java24</sourceDirectory>
<compilerCompliance>24</compilerCompliance>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- MR JAR support ends here-->
</profiles>
</project>