Hi Robert, Sorry I have not seen your email before. " useModulePath " sounds good. I will rename the property if no objections.
BR Tibor On Sat, Nov 17, 2018 at 1:00 PM Robert Scholte <rfscho...@apache.org> wrote: > On Sat, 17 Nov 2018 11:34:43 +0100, <tibordig...@apache.org> wrote: > > > 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 > > Author: Lukas Krecan <lu...@krecan.net> > > 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. > > + * > > + * @since 3.0.0-M2 > > + */ > > + @Parameter( property = "failsafe.useJigsawModules", defaultValue = > > "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; > > + } > > + > > + @Override > > + protected void setUseJigsawModules( boolean useJigsawModules ) > > + { > > + this.useJigsawModules = useJigsawModules; > > + } > > + > > + @Override > > protected final List<File> suiteXmlFiles() > > { > > return hasSuiteXmlFiles() ? Arrays.asList( 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 > > private StartupConfiguration createStartupConfiguration( @Nonnull > > ProviderInfo provider, boolean isInprocess, > > @Nonnull > > ClassLoaderConfiguration classLoaderConfiguration, > > - @Nonnull > > DefaultScanResult scanResult ) > > + @Nonnull > > DefaultScanResult scanResult, > > + @Nonnull > > 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 > > private ForkStarter createForkStarter( @Nonnull ProviderInfo > > provider, @Nonnull ForkConfiguration forkConfiguration, > > @Nonnull > > ClassLoaderConfiguration classLoaderConfiguration, > > @Nonnull RunOrderParameters > > runOrderParameters, @Nonnull ConsoleLogger log, > > - @Nonnull DefaultScanResult > > scanResult ) > > + @Nonnull DefaultScanResult > > scanResult, @Nonnull Platform platform ) > > 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 > > private InPluginVMSurefireStarter createInprocessStarter( @Nonnull > > ProviderInfo provider, > > @Nonnull > > ClassLoaderConfiguration classLoaderConfig, > > @Nonnull > > RunOrderParameters runOrderParameters, > > - @Nonnull > > DefaultScanResult scanResult ) > > + @Nonnull > > DefaultScanResult scanResult, > > + @Nonnull > > 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; > > + } > > + > > + @Override > > + protected void setUseJigsawModules( boolean useJigsawModules ) > > + { > > + > > + } > > + > > + @Override > > 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; > > + } > > + > > + @Override > > + protected void setUseJigsawModules( boolean useJigsawModules ) > > + { > > + > > + } > > + > > + @Override > > 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; > > + } > > + > > + @Override > > + protected void setUseJigsawModules( boolean useJigsawModules ) > > + { > > + > > + } > > + > > + @Override > > 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. > > + * > > + * @since 3.0.0-M2 > > + */ > > + @Parameter( property = "surefire.useJigsawModules", defaultValue = > > "true" ) > > + private boolean useJigsawModules; > > + > > @Override > > protected int getRerunFailingTestsCount() > > { > > @@ -703,6 +714,18 @@ public class SurefirePlugin > > } > > @Override > > + protected boolean useJigsawModules() > > + { > > + return useJigsawModules; > > + } > > + > > + @Override > > + protected void setUseJigsawModules( boolean useJigsawModules ) > > + { > > + this.useJigsawModules = useJigsawModules; > > + } > > + > > + @Override > > protected final List<File> suiteXmlFiles() > > { > > return hasSuiteXmlFiles() ? Arrays.asList( suiteXmlFiles ) : > > Collections.<File>emptyList(); >