From 4bbde33411f4785a479f42959ce9456e46e8e404 Mon Sep 17 00:00:00 2001 From: tom Date: Sat, 27 Mar 2021 17:24:24 +0100 Subject: [PATCH 1/3] proper toolchain support --- src/main/java/org/openjfx/JavaFXBaseMojo.java | 71 ++++++++++++------- 1 file changed, 44 insertions(+), 27 deletions(-) diff --git a/src/main/java/org/openjfx/JavaFXBaseMojo.java b/src/main/java/org/openjfx/JavaFXBaseMojo.java index e3adb11..466b83e 100644 --- a/src/main/java/org/openjfx/JavaFXBaseMojo.java +++ b/src/main/java/org/openjfx/JavaFXBaseMojo.java @@ -16,6 +16,32 @@ package org.openjfx; +import static org.openjfx.model.RuntimePathOption.CLASSPATH; +import static org.openjfx.model.RuntimePathOption.MODULEPATH; + +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Properties; +import java.util.stream.Collectors; +import java.util.stream.Stream; + import org.apache.commons.exec.CommandLine; import org.apache.commons.exec.ExecuteException; import org.apache.commons.exec.ExecuteResultHandler; @@ -33,6 +59,8 @@ import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; +import org.apache.maven.toolchain.Toolchain; +import org.apache.maven.toolchain.ToolchainManager; import org.codehaus.plexus.languages.java.jpms.JavaModuleDescriptor; import org.codehaus.plexus.languages.java.jpms.LocationManager; import org.codehaus.plexus.languages.java.jpms.ModuleNameSource; @@ -42,32 +70,6 @@ import org.codehaus.plexus.util.cli.CommandLineUtils; import org.openjfx.model.RuntimePathOption; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLClassLoader; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Properties; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import static org.openjfx.model.RuntimePathOption.CLASSPATH; -import static org.openjfx.model.RuntimePathOption.MODULEPATH; - abstract class JavaFXBaseMojo extends AbstractMojo { private static final String JAVAFX_APPLICATION_CLASS_NAME = "javafx.application.Application"; @@ -172,6 +174,12 @@ abstract class JavaFXBaseMojo extends AbstractMojo { @Parameter(property = "javafx.includePathExceptionsInClasspath", defaultValue = "false") private boolean includePathExceptionsInClasspath; + /** + * + */ + @Component + private ToolchainManager toolchainManager; + List classpathElements; List modulepathElements; Map pathElements; @@ -378,10 +386,19 @@ CommandLine getExecutablePath(String executable, Map enviro, Fil File execFile = new File(executable); String exec = null; if (execFile.isFile()) { - getLog().debug("Toolchains are ignored, 'executable' parameter is set to " + executable); + getLog().debug("'executable' parameter is set to " + executable); exec = execFile.getAbsolutePath(); } + if (exec == null && toolchainManager != null) { + Toolchain toolchain = toolchainManager.getToolchainFromBuildContext("jdk", session); + getLog().info("Toolchain in javafx-maven-plugin " + toolchain); + if (toolchain != null) { + exec = toolchain.findTool("java"); + getLog().debug("Tool in toolchain in javafx-maven-plugin " + exec); + } + } + if (exec == null) { String javaHomeFromEnv = getJavaHomeEnv(enviro); if (javaHomeFromEnv != null && ! javaHomeFromEnv.isEmpty()) { From cb63f145004c9254d90f6f57fc7f235b91def827 Mon Sep 17 00:00:00 2001 From: tom Date: Sat, 27 Mar 2021 22:34:39 +0100 Subject: [PATCH 2/3] these parameters are not used and just confuse the debug --- src/main/java/org/openjfx/JavaFXBaseMojo.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/main/java/org/openjfx/JavaFXBaseMojo.java b/src/main/java/org/openjfx/JavaFXBaseMojo.java index 466b83e..4ad0459 100644 --- a/src/main/java/org/openjfx/JavaFXBaseMojo.java +++ b/src/main/java/org/openjfx/JavaFXBaseMojo.java @@ -149,24 +149,6 @@ abstract class JavaFXBaseMojo extends AbstractMojo { @Parameter(property = "javafx.args") String commandlineArgs; - /** - *

The -source argument for the Java compiler.

- */ - @Parameter(property = "javafx.source", defaultValue = "11") - private String source; - - /** - *

The -target argument for the Java compiler.

- */ - @Parameter(property = "javafx.target", defaultValue = "11") - private String target; - - /** - * The -release argument for the Java compiler - */ - @Parameter(property = "javafx.release", defaultValue = "11") - private String release; - /** * If set to true, it will include the dependencies that * generate path exceptions in the classpath. Default is false. From 0f3d276e591ff5901c5dcb0554dc82d6b77fa844 Mon Sep 17 00:00:00 2001 From: tom Date: Sun, 28 Mar 2021 13:22:01 +0200 Subject: [PATCH 3/3] Add a remark about supporting toolchains --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 47e71b5..3b1b199 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,8 @@ is required to run a JavaFX application. Also, if a module-info descriptor is pr Values: MODULEPATH or CLASSPATH. +This plugin supports Maven toolchains using the "jdk" tool. + ### Example The following configuration adds some VM options, and a command line argument: