Discussion:
[maven-surefire] 01/01: [SUREFIRE-1531] Option to disable Java 9 modules
Robert Scholte
2018-11-17 12:00:10 UTC
Permalink
This is an automated email from the ASF dual-hosted git repository.
tibordigana pushed a commit to branch SUREFIRE-1531
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit f333b7d9e89ddfe086fd1cb930df0f77a0edbc96
AuthorDate: Sun Jul 1 08:54:22 2018 +0200
[SUREFIRE-1531] Option to disable Java 9 modules
---
.../maven/plugin/failsafe/IntegrationTestMojo.java | 23 ++++++++++
.../plugin/surefire/AbstractSurefireMojo.java | 53
+++++++++++++++-------
.../AbstractSurefireMojoJava7PlusTest.java | 12 +++++
.../plugin/surefire/AbstractSurefireMojoTest.java | 12 +++++
.../maven/plugin/surefire/MojoMocklessTest.java | 12 +++++
.../maven/plugin/surefire/SurefirePlugin.java | 23 ++++++++++
6 files changed, 119 insertions(+), 16 deletions(-)
diff --git
a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
index 52f9052..42b4cc6 100644
---
a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
+++
b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
@@ -370,6 +370,17 @@ public class IntegrationTestMojo
@Parameter( property = "failsafe.shutdown", defaultValue =
"testset" )
private String shutdown;
+ /**
+ * Disables Jigsaw (Java 9) modular path even if
<i>module-info.java</i> is used in project.
+ * <br>
+ * Enabled by default.
+ * If enabled, <i>module-info.java</i> exists and executes with JDK
9+, modular path is used.
+ *
+ */
"true" )
+ private boolean useJigsawModules;
+
I think we should avoid referring to Jigsaw, that was the name of the
project.
I'd prefer useJavaModules instead, or maybe even useModulePath.
@Override
protected int getRerunFailingTestsCount()
{
@@ -801,6 +812,18 @@ public class IntegrationTestMojo
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return useJigsawModules;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+ this.useJigsawModules = useJigsawModules;
+ }
+
protected final List<File> suiteXmlFiles()
{
Collections.<File>emptyList();
diff --git
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
index 319f21d..4a1a213 100644
---
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
+++
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
@@ -104,6 +104,7 @@ import java.util.SortedSet;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
+import static java.lang.Boolean.TRUE;
import static java.lang.Thread.currentThread;
import static java.util.Arrays.asList;
import static java.util.Collections.addAll;
@@ -728,6 +729,9 @@ public abstract class AbstractSurefireMojo
@Parameter( property = "dependenciesToScan" )
private String[] dependenciesToScan;
+ /**
+ *
+ */
@Component
private ToolchainManager toolchainManager;
@@ -787,6 +791,10 @@ public abstract class AbstractSurefireMojo
protected abstract String getReportSchemaLocation();
+ protected abstract boolean useJigsawModules();
+
+ protected abstract void setUseJigsawModules( boolean
useJigsawModules );
+
/**
* This plugin MOJO artifact.
*
@@ -954,7 +962,7 @@ public abstract class AbstractSurefireMojo
if ( !getTestClassesDirectory().exists()
&& ( getDependenciesToScan() == null ||
getDependenciesToScan().length == 0 ) )
{
- if ( Boolean.TRUE.equals( getFailIfNoTests() ) )
+ if ( TRUE.equals( getFailIfNoTests() ) )
{
throw new MojoFailureException( "No tests to run!" );
}
@@ -1123,17 +1131,18 @@ public abstract class AbstractSurefireMojo
RunOrderParameters runOrderParameters =
new RunOrderParameters( getRunOrder(), getStatisticsFile(
getConfigChecksum() ) );
+ Platform platform = PLATFORM.withJdkExecAttributesForTests(
getEffectiveJvm() );
if ( isNotForking() )
{
createCopyAndReplaceForkNumPlaceholder(
effectiveProperties, 1 ).copyToSystemProperties();
InPluginVMSurefireStarter surefireStarter =
- createInprocessStarter( provider,
classLoaderConfiguration, runOrderParameters, scanResult );
+ createInprocessStarter( provider,
classLoaderConfiguration, runOrderParameters, scanResult, platform );
return surefireStarter.runSuitesInProcess( scanResult );
}
else
{
- ForkConfiguration forkConfiguration =
getForkConfiguration();
+ ForkConfiguration forkConfiguration =
createForkConfiguration( platform );
if ( getConsoleLogger().isDebugEnabled() )
{
showMap( getEnvironmentVariables(), "environment
variable" );
@@ -1144,7 +1153,7 @@ public abstract class AbstractSurefireMojo
try
{
forkStarter = createForkStarter( provider,
forkConfiguration, classLoaderConfiguration,
-
runOrderParameters, getConsoleLogger(), scanResult );
+
runOrderParameters, getConsoleLogger(), scanResult, platform );
return forkStarter.run( effectiveProperties, scanResult
);
}
@@ -1231,6 +1240,13 @@ public abstract class AbstractSurefireMojo
return new File( getClassesDirectory(), "module-info.class" );
}
+ private boolean canExecuteProviderWithJigsaw( Platform platform )
+ {
+ return useJigsawModules()
+ &&
platform.getJdkExecAttributesForTests().isJava9AtLeast()
+ && existsModuleDescriptor();
+ }
+
/**
* Converts old TestNG configuration parameters over to new
properties based configuration
* method. (if any are defined the old way)
@@ -1683,18 +1699,18 @@ public abstract class AbstractSurefireMojo
ProviderInfo provider, boolean isInprocess,
@Nonnull
ClassLoaderConfiguration classLoaderConfiguration,
DefaultScanResult scanResult )
DefaultScanResult scanResult,
Platform platform )
throws MojoExecutionException
{
try
{
- File moduleDescriptor = getModuleDescriptor();
Set<Artifact> providerArtifacts =
provider.getProviderClasspath();
String providerName = provider.getProviderName();
- if ( moduleDescriptor.exists() && !isInprocess )
+ if ( canExecuteProviderWithJigsaw( platform ) &&
!isInprocess )
{
return newStartupConfigWithModularPath(
classLoaderConfiguration, providerArtifacts, providerName,
- moduleDescriptor, scanResult );
+ getModuleDescriptor(), scanResult );
}
else
{
@@ -2107,11 +2123,11 @@ public abstract class AbstractSurefireMojo
@Nonnull
ClassLoaderConfiguration classLoaderConfiguration,
@Nonnull RunOrderParameters
scanResult )
throws MojoExecutionException, MojoFailureException
{
StartupConfiguration startupConfiguration =
- createStartupConfiguration( provider, false,
classLoaderConfiguration, scanResult );
+ createStartupConfiguration( provider, false,
classLoaderConfiguration, scanResult, platform );
String configChecksum = getConfigChecksum();
StartupReportConfiguration startupReportConfiguration =
getStartupReportConfiguration( configChecksum, true );
ProviderConfiguration providerConfiguration =
createProviderConfiguration( runOrderParameters );
@@ -2122,11 +2138,12 @@ public abstract class AbstractSurefireMojo
ProviderInfo provider,
@Nonnull
ClassLoaderConfiguration classLoaderConfig,
@Nonnull
RunOrderParameters runOrderParameters,
DefaultScanResult scanResult )
DefaultScanResult scanResult,
Platform platform )
throws MojoExecutionException, MojoFailureException
{
StartupConfiguration startupConfiguration =
- createStartupConfiguration( provider, true,
classLoaderConfig, scanResult );
+ createStartupConfiguration( provider, true,
classLoaderConfig, scanResult, platform );
String configChecksum = getConfigChecksum();
StartupReportConfiguration startupReportConfiguration =
getStartupReportConfiguration( configChecksum, false );
ProviderConfiguration providerConfiguration =
createProviderConfiguration( runOrderParameters );
@@ -2135,7 +2152,7 @@ public abstract class AbstractSurefireMojo
}
@Nonnull
- private ForkConfiguration getForkConfiguration() throws
MojoFailureException
+ private ForkConfiguration createForkConfiguration( Platform
platform )
{
File tmpDir = getSurefireTempDir();
@@ -2143,9 +2160,7 @@ public abstract class AbstractSurefireMojo
Classpath bootClasspath = getArtifactClasspath( shadeFire !=
null ? shadeFire : surefireBooterArtifact );
- Platform platform = PLATFORM.withJdkExecAttributesForTests(
getEffectiveJvm() );
-
- if ( platform.getJdkExecAttributesForTests().isJava9AtLeast()
&& existsModuleDescriptor() )
+ if ( canExecuteProviderWithJigsaw( platform ) )
{
return new ModularClasspathForkConfiguration( bootClasspath,
tmpDir,
@@ -2414,6 +2429,7 @@ public abstract class AbstractSurefireMojo
checksum.add( getForkedProcessExitTimeoutInSeconds() );
checksum.add( getRerunFailingTestsCount() );
checksum.add( getTempDir() );
+ checksum.add( useJigsawModules() );
addPluginSpecificChecksumItems( checksum );
return checksum.getSha1();
}
@@ -3479,6 +3495,11 @@ public abstract class AbstractSurefireMojo
this.dependenciesToScan = dependenciesToScan;
}
+ public PluginDescriptor getPluginDescriptor()
+ {
+ return pluginDescriptor;
+ }
+
public MavenProject getProject()
{
return project;
diff --git
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
index f73124a..b3dc339 100644
---
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
+++
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
@@ -560,6 +560,18 @@ public class AbstractSurefireMojoJava7PlusTest
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return false;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+
+ }
+
protected Artifact getMojoArtifact()
{
return null;
diff --git
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
index de62c60..8514269 100644
---
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
+++
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
@@ -705,6 +705,18 @@ public class AbstractSurefireMojoTest
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return false;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+
+ }
+
protected Artifact getMojoArtifact()
{
return null;
diff --git
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
index 597527b..e555b00 100644
---
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
+++
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
@@ -612,6 +612,18 @@ public class MojoMocklessTest
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return false;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+
+ }
+
protected Artifact getMojoArtifact()
{
return null;
diff --git
a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
index 73ea01e..7fbbe20 100644
---
a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
+++
b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
@@ -349,6 +349,17 @@ public class SurefirePlugin
@Parameter( property = "surefire.shutdown", defaultValue =
"testset" )
private String shutdown;
+ /**
+ * Disables Jigsaw (Java 9) modular path even if
<i>module-info.java</i> is used in project.
+ * <br>
+ * Enabled by default.
+ * If enabled, <i>module-info.java</i> exists and executes with JDK
9+, modular path is used.
+ *
+ */
"true" )
+ private boolean useJigsawModules;
+
@Override
protected int getRerunFailingTestsCount()
{
@@ -703,6 +714,18 @@ public class SurefirePlugin
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return useJigsawModules;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+ this.useJigsawModules = useJigsawModules;
+ }
+
protected final List<File> suiteXmlFiles()
{
Collections.<File>emptyList();
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-***@maven.apache.org
For additional commands, e-mail: dev-***@maven.apache.org
Tibor Digana
2018-11-17 17:01:21 UTC
Permalink
Hi Robert,
Sorry I have not seen your email before.
" useModulePath " sounds good. I will rename the property if no objections.

BR
Tibor
This is an automated email from the ASF dual-hosted git repository.
tibordigana pushed a commit to branch SUREFIRE-1531
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit f333b7d9e89ddfe086fd1cb930df0f77a0edbc96
AuthorDate: Sun Jul 1 08:54:22 2018 +0200
[SUREFIRE-1531] Option to disable Java 9 modules
---
.../maven/plugin/failsafe/IntegrationTestMojo.java | 23 ++++++++++
.../plugin/surefire/AbstractSurefireMojo.java | 53
+++++++++++++++-------
.../AbstractSurefireMojoJava7PlusTest.java | 12 +++++
.../plugin/surefire/AbstractSurefireMojoTest.java | 12 +++++
.../maven/plugin/surefire/MojoMocklessTest.java | 12 +++++
.../maven/plugin/surefire/SurefirePlugin.java | 23 ++++++++++
6 files changed, 119 insertions(+), 16 deletions(-)
diff --git
a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
index 52f9052..42b4cc6 100644
---
a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
+++
b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
@@ -370,6 +370,17 @@ public class IntegrationTestMojo
@Parameter( property = "failsafe.shutdown", defaultValue =
"testset" )
private String shutdown;
+ /**
+ * Disables Jigsaw (Java 9) modular path even if
<i>module-info.java</i> is used in project.
+ * <br>
+ * Enabled by default.
+ * If enabled, <i>module-info.java</i> exists and executes with
JDK
9+, modular path is used.
+ *
+ */
"true" )
+ private boolean useJigsawModules;
+
I think we should avoid referring to Jigsaw, that was the name of the
project.
I'd prefer useJavaModules instead, or maybe even useModulePath.
@Override
protected int getRerunFailingTestsCount()
{
@@ -801,6 +812,18 @@ public class IntegrationTestMojo
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return useJigsawModules;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+ this.useJigsawModules = useJigsawModules;
+ }
+
protected final List<File> suiteXmlFiles()
{
Collections.<File>emptyList();
diff --git
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
index 319f21d..4a1a213 100644
---
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
+++
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
@@ -104,6 +104,7 @@ import java.util.SortedSet;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
+import static java.lang.Boolean.TRUE;
import static java.lang.Thread.currentThread;
import static java.util.Arrays.asList;
import static java.util.Collections.addAll;
@@ -728,6 +729,9 @@ public abstract class AbstractSurefireMojo
@Parameter( property = "dependenciesToScan" )
private String[] dependenciesToScan;
+ /**
+ *
+ */
@Component
private ToolchainManager toolchainManager;
@@ -787,6 +791,10 @@ public abstract class AbstractSurefireMojo
protected abstract String getReportSchemaLocation();
+ protected abstract boolean useJigsawModules();
+
+ protected abstract void setUseJigsawModules( boolean
useJigsawModules );
+
/**
* This plugin MOJO artifact.
*
@@ -954,7 +962,7 @@ public abstract class AbstractSurefireMojo
if ( !getTestClassesDirectory().exists()
&& ( getDependenciesToScan() == null ||
getDependenciesToScan().length == 0 ) )
{
- if ( Boolean.TRUE.equals( getFailIfNoTests() ) )
+ if ( TRUE.equals( getFailIfNoTests() ) )
{
throw new MojoFailureException( "No tests to run!" );
}
@@ -1123,17 +1131,18 @@ public abstract class AbstractSurefireMojo
RunOrderParameters runOrderParameters =
new RunOrderParameters( getRunOrder(), getStatisticsFile(
getConfigChecksum() ) );
+ Platform platform = PLATFORM.withJdkExecAttributesForTests(
getEffectiveJvm() );
if ( isNotForking() )
{
createCopyAndReplaceForkNumPlaceholder(
effectiveProperties, 1 ).copyToSystemProperties();
InPluginVMSurefireStarter surefireStarter =
- createInprocessStarter( provider,
classLoaderConfiguration, runOrderParameters, scanResult );
+ createInprocessStarter( provider,
classLoaderConfiguration, runOrderParameters, scanResult, platform );
return surefireStarter.runSuitesInProcess( scanResult );
}
else
{
- ForkConfiguration forkConfiguration =
getForkConfiguration();
+ ForkConfiguration forkConfiguration =
createForkConfiguration( platform );
if ( getConsoleLogger().isDebugEnabled() )
{
showMap( getEnvironmentVariables(), "environment
variable" );
@@ -1144,7 +1153,7 @@ public abstract class AbstractSurefireMojo
try
{
forkStarter = createForkStarter( provider,
forkConfiguration, classLoaderConfiguration,
-
runOrderParameters, getConsoleLogger(), scanResult );
+
runOrderParameters, getConsoleLogger(), scanResult, platform );
return forkStarter.run( effectiveProperties, scanResult
);
}
@@ -1231,6 +1240,13 @@ public abstract class AbstractSurefireMojo
return new File( getClassesDirectory(), "module-info.class" );
}
+ private boolean canExecuteProviderWithJigsaw( Platform platform )
+ {
+ return useJigsawModules()
+ &&
platform.getJdkExecAttributesForTests().isJava9AtLeast()
+ && existsModuleDescriptor();
+ }
+
/**
* Converts old TestNG configuration parameters over to new
properties based configuration
* method. (if any are defined the old way)
@@ -1683,18 +1699,18 @@ public abstract class AbstractSurefireMojo
ProviderInfo provider, boolean isInprocess,
@Nonnull
ClassLoaderConfiguration classLoaderConfiguration,
DefaultScanResult scanResult )
DefaultScanResult scanResult,
Platform platform )
throws MojoExecutionException
{
try
{
- File moduleDescriptor = getModuleDescriptor();
Set<Artifact> providerArtifacts =
provider.getProviderClasspath();
String providerName = provider.getProviderName();
- if ( moduleDescriptor.exists() && !isInprocess )
+ if ( canExecuteProviderWithJigsaw( platform ) &&
!isInprocess )
{
return newStartupConfigWithModularPath(
classLoaderConfiguration, providerArtifacts, providerName,
- moduleDescriptor, scanResult );
+ getModuleDescriptor(), scanResult );
}
else
{
@@ -2107,11 +2123,11 @@ public abstract class AbstractSurefireMojo
@Nonnull
ClassLoaderConfiguration classLoaderConfiguration,
@Nonnull RunOrderParameters
scanResult )
throws MojoExecutionException, MojoFailureException
{
StartupConfiguration startupConfiguration =
- createStartupConfiguration( provider, false,
classLoaderConfiguration, scanResult );
+ createStartupConfiguration( provider, false,
classLoaderConfiguration, scanResult, platform );
String configChecksum = getConfigChecksum();
StartupReportConfiguration startupReportConfiguration =
getStartupReportConfiguration( configChecksum, true );
ProviderConfiguration providerConfiguration =
createProviderConfiguration( runOrderParameters );
@@ -2122,11 +2138,12 @@ public abstract class AbstractSurefireMojo
ProviderInfo provider,
@Nonnull
ClassLoaderConfiguration classLoaderConfig,
@Nonnull
RunOrderParameters runOrderParameters,
DefaultScanResult scanResult )
DefaultScanResult scanResult,
Platform platform )
throws MojoExecutionException, MojoFailureException
{
StartupConfiguration startupConfiguration =
- createStartupConfiguration( provider, true,
classLoaderConfig, scanResult );
+ createStartupConfiguration( provider, true,
classLoaderConfig, scanResult, platform );
String configChecksum = getConfigChecksum();
StartupReportConfiguration startupReportConfiguration =
getStartupReportConfiguration( configChecksum, false );
ProviderConfiguration providerConfiguration =
createProviderConfiguration( runOrderParameters );
@@ -2135,7 +2152,7 @@ public abstract class AbstractSurefireMojo
}
@Nonnull
- private ForkConfiguration getForkConfiguration() throws
MojoFailureException
+ private ForkConfiguration createForkConfiguration( Platform
platform )
{
File tmpDir = getSurefireTempDir();
@@ -2143,9 +2160,7 @@ public abstract class AbstractSurefireMojo
Classpath bootClasspath = getArtifactClasspath( shadeFire !=
null ? shadeFire : surefireBooterArtifact );
- Platform platform = PLATFORM.withJdkExecAttributesForTests(
getEffectiveJvm() );
-
- if ( platform.getJdkExecAttributesForTests().isJava9AtLeast()
&& existsModuleDescriptor() )
+ if ( canExecuteProviderWithJigsaw( platform ) )
{
return new ModularClasspathForkConfiguration( bootClasspath,
tmpDir,
@@ -2414,6 +2429,7 @@ public abstract class AbstractSurefireMojo
checksum.add( getForkedProcessExitTimeoutInSeconds() );
checksum.add( getRerunFailingTestsCount() );
checksum.add( getTempDir() );
+ checksum.add( useJigsawModules() );
addPluginSpecificChecksumItems( checksum );
return checksum.getSha1();
}
@@ -3479,6 +3495,11 @@ public abstract class AbstractSurefireMojo
this.dependenciesToScan = dependenciesToScan;
}
+ public PluginDescriptor getPluginDescriptor()
+ {
+ return pluginDescriptor;
+ }
+
public MavenProject getProject()
{
return project;
diff --git
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
index f73124a..b3dc339 100644
---
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
+++
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
@@ -560,6 +560,18 @@ public class AbstractSurefireMojoJava7PlusTest
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return false;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+
+ }
+
protected Artifact getMojoArtifact()
{
return null;
diff --git
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
index de62c60..8514269 100644
---
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
+++
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
@@ -705,6 +705,18 @@ public class AbstractSurefireMojoTest
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return false;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+
+ }
+
protected Artifact getMojoArtifact()
{
return null;
diff --git
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
index 597527b..e555b00 100644
---
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
+++
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
@@ -612,6 +612,18 @@ public class MojoMocklessTest
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return false;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+
+ }
+
protected Artifact getMojoArtifact()
{
return null;
diff --git
a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
index 73ea01e..7fbbe20 100644
---
a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
+++
b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
@@ -349,6 +349,17 @@ public class SurefirePlugin
@Parameter( property = "surefire.shutdown", defaultValue =
"testset" )
private String shutdown;
+ /**
+ * Disables Jigsaw (Java 9) modular path even if
<i>module-info.java</i> is used in project.
+ * <br>
+ * Enabled by default.
+ * If enabled, <i>module-info.java</i> exists and executes with
JDK
9+, modular path is used.
+ *
+ */
"true" )
+ private boolean useJigsawModules;
+
@Override
protected int getRerunFailingTestsCount()
{
@@ -703,6 +714,18 @@ public class SurefirePlugin
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return useJigsawModules;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+ this.useJigsawModules = useJigsawModules;
+ }
+
protected final List<File> suiteXmlFiles()
{
Collections.<File>emptyList();
Enrico Olivelli
2018-11-17 17:03:00 UTC
Permalink
+1

Enrico
Post by Tibor Digana
Hi Robert,
Sorry I have not seen your email before.
" useModulePath " sounds good. I will rename the property if no objections.
BR
Tibor
Post by Robert Scholte
This is an automated email from the ASF dual-hosted git repository.
tibordigana pushed a commit to branch SUREFIRE-1531
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit f333b7d9e89ddfe086fd1cb930df0f77a0edbc96
AuthorDate: Sun Jul 1 08:54:22 2018 +0200
[SUREFIRE-1531] Option to disable Java 9 modules
---
.../maven/plugin/failsafe/IntegrationTestMojo.java | 23 ++++++++++
.../plugin/surefire/AbstractSurefireMojo.java | 53
+++++++++++++++-------
.../AbstractSurefireMojoJava7PlusTest.java | 12 +++++
.../plugin/surefire/AbstractSurefireMojoTest.java | 12 +++++
.../maven/plugin/surefire/MojoMocklessTest.java | 12 +++++
.../maven/plugin/surefire/SurefirePlugin.java | 23 ++++++++++
6 files changed, 119 insertions(+), 16 deletions(-)
diff --git
a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
Post by Robert Scholte
index 52f9052..42b4cc6 100644
---
a/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
Post by Robert Scholte
+++
b/maven-failsafe-plugin/src/main/java/org/apache/maven/plugin/failsafe/IntegrationTestMojo.java
Post by Robert Scholte
@@ -370,6 +370,17 @@ public class IntegrationTestMojo
@Parameter( property = "failsafe.shutdown", defaultValue =
"testset" )
private String shutdown;
+ /**
+ * Disables Jigsaw (Java 9) modular path even if
<i>module-info.java</i> is used in project.
+ * <br>
+ * Enabled by default.
+ * If enabled, <i>module-info.java</i> exists and executes with
JDK
9+, modular path is used.
+ *
+ */
"true" )
+ private boolean useJigsawModules;
+
I think we should avoid referring to Jigsaw, that was the name of the
project.
I'd prefer useJavaModules instead, or maybe even useModulePath.
@Override
protected int getRerunFailingTestsCount()
{
@@ -801,6 +812,18 @@ public class IntegrationTestMojo
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return useJigsawModules;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+ this.useJigsawModules = useJigsawModules;
+ }
+
protected final List<File> suiteXmlFiles()
{
Collections.<File>emptyList();
diff --git
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
Post by Robert Scholte
index 319f21d..4a1a213 100644
---
a/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
Post by Robert Scholte
+++
b/maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java
Post by Robert Scholte
@@ -104,6 +104,7 @@ import java.util.SortedSet;
import java.util.TreeSet;
import java.util.concurrent.ConcurrentHashMap;
+import static java.lang.Boolean.TRUE;
import static java.lang.Thread.currentThread;
import static java.util.Arrays.asList;
import static java.util.Collections.addAll;
@@ -728,6 +729,9 @@ public abstract class AbstractSurefireMojo
@Parameter( property = "dependenciesToScan" )
private String[] dependenciesToScan;
+ /**
+ *
+ */
@Component
private ToolchainManager toolchainManager;
@@ -787,6 +791,10 @@ public abstract class AbstractSurefireMojo
protected abstract String getReportSchemaLocation();
+ protected abstract boolean useJigsawModules();
+
+ protected abstract void setUseJigsawModules( boolean
useJigsawModules );
+
/**
* This plugin MOJO artifact.
*
@@ -954,7 +962,7 @@ public abstract class AbstractSurefireMojo
if ( !getTestClassesDirectory().exists()
&& ( getDependenciesToScan() == null ||
getDependenciesToScan().length == 0 ) )
{
- if ( Boolean.TRUE.equals( getFailIfNoTests() ) )
+ if ( TRUE.equals( getFailIfNoTests() ) )
{
throw new MojoFailureException( "No tests to run!" );
}
@@ -1123,17 +1131,18 @@ public abstract class AbstractSurefireMojo
RunOrderParameters runOrderParameters =
new RunOrderParameters( getRunOrder(), getStatisticsFile(
getConfigChecksum() ) );
+ Platform platform = PLATFORM.withJdkExecAttributesForTests(
getEffectiveJvm() );
if ( isNotForking() )
{
createCopyAndReplaceForkNumPlaceholder(
effectiveProperties, 1 ).copyToSystemProperties();
InPluginVMSurefireStarter surefireStarter =
- createInprocessStarter( provider,
classLoaderConfiguration, runOrderParameters, scanResult );
+ createInprocessStarter( provider,
classLoaderConfiguration, runOrderParameters, scanResult, platform );
return surefireStarter.runSuitesInProcess( scanResult );
}
else
{
- ForkConfiguration forkConfiguration =
getForkConfiguration();
+ ForkConfiguration forkConfiguration =
createForkConfiguration( platform );
if ( getConsoleLogger().isDebugEnabled() )
{
showMap( getEnvironmentVariables(), "environment
variable" );
@@ -1144,7 +1153,7 @@ public abstract class AbstractSurefireMojo
try
{
forkStarter = createForkStarter( provider,
forkConfiguration, classLoaderConfiguration,
-
runOrderParameters, getConsoleLogger(), scanResult );
+
runOrderParameters, getConsoleLogger(), scanResult, platform );
return forkStarter.run( effectiveProperties, scanResult
);
}
@@ -1231,6 +1240,13 @@ public abstract class AbstractSurefireMojo
return new File( getClassesDirectory(), "module-info.class" );
}
+ private boolean canExecuteProviderWithJigsaw( Platform platform )
+ {
+ return useJigsawModules()
+ &&
platform.getJdkExecAttributesForTests().isJava9AtLeast()
+ && existsModuleDescriptor();
+ }
+
/**
* Converts old TestNG configuration parameters over to new
properties based configuration
* method. (if any are defined the old way)
@@ -1683,18 +1699,18 @@ public abstract class AbstractSurefireMojo
ProviderInfo provider, boolean isInprocess,
@Nonnull
ClassLoaderConfiguration classLoaderConfiguration,
DefaultScanResult scanResult )
DefaultScanResult scanResult,
Platform platform )
throws MojoExecutionException
{
try
{
- File moduleDescriptor = getModuleDescriptor();
Set<Artifact> providerArtifacts =
provider.getProviderClasspath();
String providerName = provider.getProviderName();
- if ( moduleDescriptor.exists() && !isInprocess )
+ if ( canExecuteProviderWithJigsaw( platform ) &&
!isInprocess )
{
return newStartupConfigWithModularPath(
classLoaderConfiguration, providerArtifacts, providerName,
- moduleDescriptor, scanResult );
+ getModuleDescriptor(), scanResult );
}
else
{
@@ -2107,11 +2123,11 @@ public abstract class AbstractSurefireMojo
@Nonnull
ClassLoaderConfiguration classLoaderConfiguration,
@Nonnull RunOrderParameters
scanResult )
throws MojoExecutionException, MojoFailureException
{
StartupConfiguration startupConfiguration =
- createStartupConfiguration( provider, false,
classLoaderConfiguration, scanResult );
+ createStartupConfiguration( provider, false,
classLoaderConfiguration, scanResult, platform );
String configChecksum = getConfigChecksum();
StartupReportConfiguration startupReportConfiguration =
getStartupReportConfiguration( configChecksum, true );
ProviderConfiguration providerConfiguration =
createProviderConfiguration( runOrderParameters );
@@ -2122,11 +2138,12 @@ public abstract class AbstractSurefireMojo
ProviderInfo provider,
@Nonnull
ClassLoaderConfiguration classLoaderConfig,
@Nonnull
RunOrderParameters runOrderParameters,
DefaultScanResult scanResult )
DefaultScanResult scanResult,
Platform platform )
throws MojoExecutionException, MojoFailureException
{
StartupConfiguration startupConfiguration =
- createStartupConfiguration( provider, true,
classLoaderConfig, scanResult );
+ createStartupConfiguration( provider, true,
classLoaderConfig, scanResult, platform );
String configChecksum = getConfigChecksum();
StartupReportConfiguration startupReportConfiguration =
getStartupReportConfiguration( configChecksum, false );
ProviderConfiguration providerConfiguration =
createProviderConfiguration( runOrderParameters );
@@ -2135,7 +2152,7 @@ public abstract class AbstractSurefireMojo
}
@Nonnull
- private ForkConfiguration getForkConfiguration() throws
MojoFailureException
+ private ForkConfiguration createForkConfiguration( Platform
platform )
{
File tmpDir = getSurefireTempDir();
@@ -2143,9 +2160,7 @@ public abstract class AbstractSurefireMojo
Classpath bootClasspath = getArtifactClasspath( shadeFire !=
null ? shadeFire : surefireBooterArtifact );
- Platform platform = PLATFORM.withJdkExecAttributesForTests(
getEffectiveJvm() );
-
- if ( platform.getJdkExecAttributesForTests().isJava9AtLeast()
&& existsModuleDescriptor() )
+ if ( canExecuteProviderWithJigsaw( platform ) )
{
return new ModularClasspathForkConfiguration(
bootClasspath,
Post by Robert Scholte
tmpDir,
@@ -2414,6 +2429,7 @@ public abstract class AbstractSurefireMojo
checksum.add( getForkedProcessExitTimeoutInSeconds() );
checksum.add( getRerunFailingTestsCount() );
checksum.add( getTempDir() );
+ checksum.add( useJigsawModules() );
addPluginSpecificChecksumItems( checksum );
return checksum.getSha1();
}
@@ -3479,6 +3495,11 @@ public abstract class AbstractSurefireMojo
this.dependenciesToScan = dependenciesToScan;
}
+ public PluginDescriptor getPluginDescriptor()
+ {
+ return pluginDescriptor;
+ }
+
public MavenProject getProject()
{
return project;
diff --git
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
Post by Robert Scholte
index f73124a..b3dc339 100644
---
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
Post by Robert Scholte
+++
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoJava7PlusTest.java
Post by Robert Scholte
@@ -560,6 +560,18 @@ public class AbstractSurefireMojoJava7PlusTest
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return false;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+
+ }
+
protected Artifact getMojoArtifact()
{
return null;
diff --git
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
Post by Robert Scholte
index de62c60..8514269 100644
---
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
Post by Robert Scholte
+++
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/AbstractSurefireMojoTest.java
Post by Robert Scholte
@@ -705,6 +705,18 @@ public class AbstractSurefireMojoTest
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return false;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+
+ }
+
protected Artifact getMojoArtifact()
{
return null;
diff --git
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
Post by Robert Scholte
index 597527b..e555b00 100644
---
a/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
Post by Robert Scholte
+++
b/maven-surefire-common/src/test/java/org/apache/maven/plugin/surefire/MojoMocklessTest.java
Post by Robert Scholte
@@ -612,6 +612,18 @@ public class MojoMocklessTest
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return false;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+
+ }
+
protected Artifact getMojoArtifact()
{
return null;
diff --git
a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
Post by Robert Scholte
index 73ea01e..7fbbe20 100644
---
a/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
Post by Robert Scholte
+++
b/maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java
Post by Robert Scholte
@@ -349,6 +349,17 @@ public class SurefirePlugin
@Parameter( property = "surefire.shutdown", defaultValue =
"testset" )
private String shutdown;
+ /**
+ * Disables Jigsaw (Java 9) modular path even if
<i>module-info.java</i> is used in project.
+ * <br>
+ * Enabled by default.
+ * If enabled, <i>module-info.java</i> exists and executes with
JDK
9+, modular path is used.
+ *
+ */
"true" )
+ private boolean useJigsawModules;
+
@Override
protected int getRerunFailingTestsCount()
{
@@ -703,6 +714,18 @@ public class SurefirePlugin
}
@Override
+ protected boolean useJigsawModules()
+ {
+ return useJigsawModules;
+ }
+
+ protected void setUseJigsawModules( boolean useJigsawModules )
+ {
+ this.useJigsawModules = useJigsawModules;
+ }
+
protected final List<File> suiteXmlFiles()
{
Collections.<File>emptyList();
--
-- Enrico Olivelli
Continue reading on narkive:
Loading...