miscellaneous-slides

Maven Toolchains Plugin

 

The Usual Suspects

 

Maven Toolchains Plugin

mvn toolchains:display-discovered-jdk-toolchains
[INFO] --- toolchains:3.2.0:display-discovered-jdk-toolchains (default-cli) @ standalone-pom ---
[INFO] Found 2 possible jdks: [/usr/lib/jvm/java-25-openjdk-amd64, /usr/lib/jvm/java-21-openjdk-amd64]
[INFO] Discovered 2 JDK toolchains:
[INFO]   - /usr/lib/jvm/java-21-openjdk-amd64
[INFO]     provides:
[INFO]       version: 21.0.10
[INFO]       runtime.name: OpenJDK Runtime Environment
[INFO]       runtime.version: 21.0.10+7-Debian-1deb13u1
[INFO]       vendor: Debian
[INFO]       current: true
[INFO]       lts: true
[INFO]   - /usr/lib/jvm/java-25-openjdk-amd64
[INFO]     provides:
[INFO]       version: 25.0.1
[INFO]       runtime.name: OpenJDK Runtime Environment
[INFO]       runtime.version: 25.0.1+8-Debian-1deb13u1
[INFO]       vendor: Debian
[INFO]       lts: true
[INFO] ------------------------------------------------------------------------
 

JDK Toolchain discovery

pom.xml
<properties>
    <toolchain.jdk.version>[25,)</toolchain.jdk.version>
</properties>
 <build>
     <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-toolchains-plugin</artifactId>
            <version>3.2.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>select-jdk-toolchain</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
 

ToolchainDiscoverer.java

Windows

MacOS

Linux

From 3rd Party Tools

 

JDK Standard Toolchain

~/.m2/toolchains.xml
<toolchains>
    <toolchain>
        <type>jdk</type>
        <provides>
            <version>17</version>
            <vendor>Eclipse Adoptium</vendor>
        </provides>
        <configuration>
            <jdkHome>/opt/adoptium/temurin/jdk-17.0.18+8</jdkHome>
        </configuration>
    </toolchain>
    <toolchain>
        <type>jdk</type>
        <provides>
            <version>11</version>
            <vendor>Eclipse Adoptium</vendor>
        </provides>
        <configuration>
            <jdkHome>/opt/adoptium/temurin/jdk-11.0.30+7</jdkHome>
        </configuration>
    </toolchain>
</toolchains>