diff --git a/retrolambda-maven-plugin/pom.xml b/retrolambda-maven-plugin/pom.xml index 951a593c..20f39a86 100644 --- a/retrolambda-maven-plugin/pom.xml +++ b/retrolambda-maven-plugin/pom.xml @@ -13,7 +13,7 @@ maven-plugin - 3.0 + 3.3.9 @@ -29,10 +29,17 @@ ${project.version} + + org.apache.maven + maven-core + 3.3.9 + provided + org.apache.maven maven-plugin-api - 3.0 + 3.3.9 + provided org.apache.maven.plugin-tools @@ -50,7 +57,7 @@ org.twdata.maven mojo-executor - 2.2.0 + 2.4.1-m2 @@ -70,6 +77,7 @@ maven-toolchains-plugin + 3.1.0 diff --git a/retrolambda-maven-plugin/src/main/java/net/orfjackal/retrolambda/maven/ProcessClassesMojo.java b/retrolambda-maven-plugin/src/main/java/net/orfjackal/retrolambda/maven/ProcessClassesMojo.java index 122decd6..04690dae 100644 --- a/retrolambda-maven-plugin/src/main/java/net/orfjackal/retrolambda/maven/ProcessClassesMojo.java +++ b/retrolambda-maven-plugin/src/main/java/net/orfjackal/retrolambda/maven/ProcessClassesMojo.java @@ -222,21 +222,37 @@ private void retrieveRetrolambdaJar(String version) throws MojoExecutionExceptio } String getJavaCommand() { - String javaCommand = getJavaCommand(new File(System.getProperty("java.home"))); - - Toolchain tc = toolchainManager.getToolchainFromBuildContext("jdk", session); - if (tc != null) { - getLog().info("Toolchain in retrolambda-maven-plugin: " + tc); - javaCommand = tc.findTool("java"); - } - - if (java8home != null) { - if (tc != null) { - getLog().warn("Toolchains are ignored, 'java8home' parameter is set to " + java8home); - } - javaCommand = getJavaCommand(java8home); - } - return javaCommand; + String javaCommand = null; + + List tcCandidates = toolchainManager.getToolchains(session, "jdk", Collections + .singletonMap("version", "1.8")); + for (Toolchain tc : tcCandidates) { + String cmd = tc.findTool("java"); + if (cmd != null) { + getLog().info("Toolchain in retrolambda-maven-plugin: " + tc); + javaCommand = cmd; + break; + } + } + + Toolchain tc = toolchainManager.getToolchainFromBuildContext("jdk", session); + if (javaCommand == null && tc != null) { + getLog().info("Toolchain in retrolambda-maven-plugin: " + tc); + javaCommand = tc.findTool("java"); + } + + if (java8home != null) { + if (tc != null) { + getLog().warn("Toolchains are ignored, 'java8home' parameter is set to " + java8home); + } + javaCommand = getJavaCommand(java8home); + } + + if (javaCommand == null) { + javaCommand = getJavaCommand(new File(System.getProperty("java.home"))); + } + + return javaCommand; } private static String getJavaCommand(File javaHome) { diff --git a/retrolambda-maven-plugin/src/main/java/net/orfjackal/retrolambda/maven/ProcessTestClassesMojo.java b/retrolambda-maven-plugin/src/main/java/net/orfjackal/retrolambda/maven/ProcessTestClassesMojo.java index 0060a714..00d9215f 100644 --- a/retrolambda-maven-plugin/src/main/java/net/orfjackal/retrolambda/maven/ProcessTestClassesMojo.java +++ b/retrolambda-maven-plugin/src/main/java/net/orfjackal/retrolambda/maven/ProcessTestClassesMojo.java @@ -4,12 +4,15 @@ package net.orfjackal.retrolambda.maven; -import org.apache.maven.artifact.DependencyResolutionRequiredException; -import org.apache.maven.plugins.annotations.*; - import java.io.File; import java.util.List; +import org.apache.maven.artifact.DependencyResolutionRequiredException; +import org.apache.maven.plugins.annotations.LifecyclePhase; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.plugins.annotations.ResolutionScope; + /** * Processes test classes compiled with Java 8 so that they will be compatible with * Java 5, 6 or 7 runtime. diff --git a/retrolambda-maven-plugin/src/test/java/net/orfjackal/retrolambda/maven/ProcessClassesMojoTest.java b/retrolambda-maven-plugin/src/test/java/net/orfjackal/retrolambda/maven/ProcessClassesMojoTest.java index cfdbbcb7..023df0b9 100644 --- a/retrolambda-maven-plugin/src/test/java/net/orfjackal/retrolambda/maven/ProcessClassesMojoTest.java +++ b/retrolambda-maven-plugin/src/test/java/net/orfjackal/retrolambda/maven/ProcessClassesMojoTest.java @@ -76,9 +76,20 @@ public Toolchain getToolchainFromBuildContext(String type, MavenSession context) return toolChainsByType.get(type); } - public void setJdkToolChain(JavaToolChain toolChain) { + public void setJdkToolChain(JavaToolchain toolChain) { toolChainsByType.put("jdk", toolChain); } + + @Override + public List getToolchains(MavenSession session, String type, + Map requirements) { + Toolchain tc = toolChainsByType.get("jdk"); + if(tc == null) { + return Collections.emptyList(); + } else { + return Collections.singletonList(tc); + } + } } private static class FakeJavaToolChain extends DefaultJavaToolChain {