从 Maven 工具链确定 JDK 主页

Determine JDK home from Maven toolchain

我有一个 Maven 构建配置为使用 maven-toolchains-plugin~/.m2/toolchains.xml 简单配置为多个 JDKs:

<?xml version="1.0" encoding="UTF8"?>
<toolchains>
    <toolchain>
        <type>jdk</type>
        <provides>
            <version>9</version>
            <vendor>oracle</vendor>
        </provides>
        <configuration>
            <jdkHome>/Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home</jdkHome>
        </configuration>
    </toolchain>
    <toolchain>
        <!-- ... several more JDKs ... -->
    </toolchain>
</toolchains>

我的目标是在 POM 中使用 jdkHome 的值,作为 JDK9 jlink 工具的参数,但我不能找不到任何方法来提取值,或设置一个可用的 属性,它引用了工具链 JDK 的 jdkHome/JAVA_HOME。有没有人找到实现这一目标的方法?我真的不想为了设置另一个 exec-maven-pluginmaven-antrun-plugin 进程属性,我想一定有一些简单的方法可以实现这一点,但我忽略了。

这是 Maven 插件的 link,它使活动 JDK 工具链的 jdkHome 在 Maven 中作为 javaHome 属性 可用:

https://github.com/dadrus/javahome-resolver-maven-plugin

免责声明:我不是该插件的开发者。

一些注意事项:工具链插件必须在 javahome-resolver-plugin 之前 运行 因为确定默认 JDK 的逻辑(即没有工具链使用的那个)不起作用打算。