smallrye-build-parent
Used in:
components
- OverviewOverview
- VersionsVersions
- DependentsDependents
- DependenciesDependencies
<dependency> <groupId>io.smallrye</groupId> <artifactId>smallrye-build-parent</artifactId> <version>47</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>47</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.2</version.surefire> <!-- Plugin versions --> <version.clean.plugin>3.4.0</version.clean.plugin> <version.compiler.plugin>3.13.0</version.compiler.plugin> <version.resources.plugin>3.3.1</version.resources.plugin> <version.gpg.plugin>3.2.7</version.gpg.plugin> <version.install.plugin>3.1.3</version.install.plugin> <version.jar.plugin>3.4.2</version.jar.plugin> <version.javadoc.plugin>3.11.2</version.javadoc.plugin> <version.nexus.staging.plugin>1.7.0</version.nexus.staging.plugin> <version.release.plugin>3.1.1</version.release.plugin> <version.deploy.plugin>3.1.3</version.deploy.plugin> <version.source.plugin>3.3.1</version.source.plugin> <version.site.plugin>3.21.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.8.1</version.dependency.plugin> <version.smallrye.code.rules.plugin>2</version.smallrye.code.rules.plugin> <version.formatter.plugin>2.22.0</version.formatter.plugin> <version.impsort.plugin>1.9.0</version.impsort.plugin> <version.jacoco.plugin>0.8.12</version.jacoco.plugin> <version.buildnumber.plugin>3.2.1</version.buildnumber.plugin> <version.versions.plugin>2.18.0</version.versions.plugin> <version.org.jboss.logging-processor>3.0.3.Final</version.org.jboss.logging-processor> <!-- 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>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> <!-- 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>47</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> <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> </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> <dependencies> <dependency> <groupId>io.smallrye</groupId> <artifactId>smallrye-code-rules</artifactId> <version>${version.smallrye.code.rules.plugin}</version> </dependency> </dependencies> <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-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>compile</goal> </goals> <configuration> <release>11</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>11</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>11</compilerCompliance> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-javadoc-plugin</artifactId> <configuration> <source>11</source> </configuration> </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>compile</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>compile</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> <!-- --> <!-- 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 test a project that supports Java 11--> <profile> <id>java11-test</id> <activation> <jdk>[17,)</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> <classesDirectory>${project.build.outputDirectory}/META-INF/versions/11</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> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifestEntries> <Multi-Release>true</Multi-Release> </manifestEntries> </archive> </configuration> </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> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifestEntries> <Multi-Release>true</Multi-Release> </manifestEntries> </archive> </configuration> </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> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifestEntries> <Multi-Release>true</Multi-Release> </manifestEntries> </archive> </configuration> </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> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifestEntries> <Multi-Release>true</Multi-Release> </manifestEntries> </archive> </configuration> </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> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifestEntries> <Multi-Release>true</Multi-Release> </manifestEntries> </archive> </configuration> </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> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifestEntries> <Multi-Release>true</Multi-Release> </manifestEntries> </archive> </configuration> </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> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifestEntries> <Multi-Release>true</Multi-Release> </manifestEntries> </archive> </configuration> </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> <!-- MR JAR support ends here--> </profiles> </project>