Author: rfscholte
Date: Mon Sep 26 21:37:38 2016
New Revision: 1762385
URL: http://svn.apache.org/viewvc?rev=1762385&view=rev
Log:
[MCOMPILER-269] Support modulepath (Java9/Jigsaw)
Add custom jdkToolchain, required when building module-info.java ( requires
java9 ) while other sources have a lower target (e.g. 1.5)
Modified:
maven/plugins/trunk/maven-compiler-plugin/src/it/MCOMPILER-275_separate-moduleinfo/pom.xml
maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java
Modified:
maven/plugins/trunk/maven-compiler-plugin/src/it/MCOMPILER-275_separate-moduleinfo/pom.xml
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-compiler-plugin/src/it/MCOMPILER-275_separate-moduleinfo/pom.xml?rev=1762385&r1=1762384&r2=1762385&view=diff
==============================================================================
---
maven/plugins/trunk/maven-compiler-plugin/src/it/MCOMPILER-275_separate-moduleinfo/pom.xml
(original)
+++
maven/plugins/trunk/maven-compiler-plugin/src/it/MCOMPILER-275_separate-moduleinfo/pom.xml
Mon Sep 26 21:37:38 2016
@@ -72,7 +72,6 @@
<jdkToolchain>
<version>9</version>
</jdkToolchain>
- <fork>true</fork>
<release>9</release>
</configuration>
</execution>
Modified:
maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java
URL:
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java?rev=1762385&r1=1762384&r2=1762385&view=diff
==============================================================================
---
maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java
(original)
+++
maven/plugins/trunk/maven-compiler-plugin/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java
Mon Sep 26 21:37:38 2016
@@ -20,6 +20,7 @@ package org.apache.maven.plugin.compiler
*/
import java.io.File;
+import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Date;
@@ -351,6 +352,12 @@ public abstract class AbstractCompilerMo
@Component
private ToolchainManager toolchainManager;
+ /**
+ * Specify the requirements for this jdk toolchain
+ */
+ @Parameter
+ private Map<String, String> jdkToolchain;
+
// ----------------------------------------------------------------------
// Read-only parameters
// ----------------------------------------------------------------------
@@ -1201,10 +1208,53 @@ public abstract class AbstractCompilerMo
private Toolchain getToolchain()
{
Toolchain tc = null;
- if ( toolchainManager != null )
+
+ if ( jdkToolchain != null )
+ {
+ // Maven 3.2.6 has plugin execution scoped Toolchain Support
+ try
+ {
+ Method getToolchainsMethod =
+ toolchainManager.getClass().getMethod( "getToolchains",
MavenSession.class, String.class,
+ Map.class );
+
+ @SuppressWarnings( "unchecked" )
+ List<Toolchain> tcs =
+ (List<Toolchain>) getToolchainsMethod.invoke(
toolchainManager, session, "jdk",
+ jdkToolchain
);
+
+ if ( tcs != null && tcs.size() > 0 )
+ {
+ tc = tcs.get( tcs.size() - 1 );
+ }
+ }
+ catch ( NoSuchMethodException e )
+ {
+ // ignore
+ }
+ catch ( SecurityException e )
+ {
+ // ignore
+ }
+ catch ( IllegalAccessException e )
+ {
+ // ignore
+ }
+ catch ( IllegalArgumentException e )
+ {
+ // ignore
+ }
+ catch ( InvocationTargetException e )
+ {
+ // ignore
+ }
+ }
+
+ if ( tc == null )
{
tc = toolchainManager.getToolchainFromBuildContext( "jdk", session
);
}
+
return tc;
}