You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2018/12/01 23:27:28 UTC
[maven-surefire] 01/01: [SUREFIRE-1605] NoClassDefFoundError
(RunNotifier) with JDK 11
This is an automated email from the ASF dual-hosted git repository.
tibordigana pushed a commit to branch SUREFIRE-1605
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git
commit 9ea56f0847d572cacfb828dc70b090892ca82eee
Author: Tibor17 <ti...@apache.org>
AuthorDate: Sun Dec 2 00:27:12 2018 +0100
[SUREFIRE-1605] NoClassDefFoundError (RunNotifier) with JDK 11
---
.../maven/plugin/surefire/AbstractSurefireMojo.java | 21 +++++++++++++++++++--
.../surefire/AbstractSurefireMojoJava7PlusTest.java | 4 +++-
pom.xml | 2 +-
3 files changed, 23 insertions(+), 4 deletions(-)
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 b6ae1bb..6f973b8 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
@@ -89,6 +89,7 @@ import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.nio.file.Files;
+import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
@@ -1709,8 +1710,16 @@ public abstract class AbstractSurefireMojo
String providerName = provider.getProviderName();
if ( canExecuteProviderWithModularPath( platform ) && !isInprocess )
{
+ String jvmExecutable = platform.getJdkExecAttributesForTests().getJvmExecutable();
+ String javaHome = Paths.get( jvmExecutable )
+ .toAbsolutePath()
+ .normalize()
+ .getParent()
+ .getParent()
+ .toString();
+
return newStartupConfigWithModularPath( classLoaderConfiguration, providerArtifacts, providerName,
- getModuleDescriptor(), scanResult );
+ getModuleDescriptor(), scanResult, javaHome );
}
else
{
@@ -1801,7 +1810,8 @@ public abstract class AbstractSurefireMojo
private StartupConfiguration newStartupConfigWithModularPath(
@Nonnull ClassLoaderConfiguration classLoaderConfiguration, @Nonnull Set<Artifact> providerArtifacts,
- @Nonnull String providerName, @Nonnull File moduleDescriptor, @Nonnull DefaultScanResult scanResult )
+ @Nonnull String providerName, @Nonnull File moduleDescriptor, @Nonnull DefaultScanResult scanResult,
+ @Nonnull String javaHome )
throws IOException
{
TestClassPath testClasspathWrapper = generateTestClasspath();
@@ -1816,9 +1826,16 @@ public abstract class AbstractSurefireMojo
}
ResolvePathsRequest<String> req = ResolvePathsRequest.ofStrings( testClasspath.getClassPath() )
+ .setJdkHome( javaHome )
.setMainModuleDescriptor( moduleDescriptor.getAbsolutePath() );
ResolvePathsResult<String> result = getLocationManager().resolvePaths( req );
+ for ( Entry<String, Exception> entry : result.getPathExceptions().entrySet() )
+ {
+ getConsoleLogger()
+ .warning( "Exception for '" + entry.getKey() + "' (probably JDK version < 9).",
+ entry.getValue() );
+ }
testClasspath = new Classpath( result.getClasspathElements() );
Classpath testModulepath = new Classpath( result.getModulepathElements().keySet() );
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 6903995..c60faca 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
@@ -135,6 +135,7 @@ public class AbstractSurefireMojoJava7PlusTest
ResolvePathsRequest<String> req = mock( ResolvePathsRequest.class );
mockStatic( ResolvePathsRequest.class );
when( ResolvePathsRequest.ofStrings( eq( testClasspath.toClasspath().getClassPath() ) ) ).thenReturn( req );
+ when( req.setJdkHome( anyString() ) ).thenReturn( req );
when( req.setMainModuleDescriptor( eq( moduleInfo.getAbsolutePath() ) ) ).thenReturn( req );
@SuppressWarnings( "unchecked" )
@@ -152,7 +153,8 @@ public class AbstractSurefireMojoJava7PlusTest
when( mojo.getConsoleLogger() ).thenReturn( new PluginConsoleLogger( logger ) );
StartupConfiguration conf = invokeMethod( mojo, "newStartupConfigWithModularPath",
- classLoaderConfiguration, providerClasspath, "org.asf.Provider", moduleInfo, scanResult );
+ classLoaderConfiguration, providerClasspath, "org.asf.Provider", moduleInfo, scanResult,
+ "" );
verify( mojo, times( 1 ) ).effectiveIsEnableAssertions();
verify( mojo, times( 1 ) ).isChildDelegation();
diff --git a/pom.xml b/pom.xml
index 09bce00..7aed0f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -239,7 +239,7 @@
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-java</artifactId>
- <version>0.9.11</version>
+ <version>1.0.1</version>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>