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 2020/07/08 12:05:27 UTC

[maven-surefire] branch master updated: [SUREFIRE-1809] Differences between Oracle JDK and AdoptOpenJDK caused by JPMS

This is an automated email from the ASF dual-hosted git repository.

tibordigana pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git


The following commit(s) were added to refs/heads/master by this push:
     new f977237  [SUREFIRE-1809] Differences between Oracle JDK and AdoptOpenJDK caused by JPMS
f977237 is described below

commit f9772370749cc9fa19638159f0b29e3be6794614
Author: tibordigana <ti...@apache.org>
AuthorDate: Tue Jun 30 15:46:27 2020 +0200

    [SUREFIRE-1809] Differences between Oracle JDK and AdoptOpenJDK caused by JPMS
---
 .../maven/plugin/surefire/AbstractSurefireMojo.java    | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

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 38d34fb..64975b4 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
@@ -119,6 +119,7 @@ import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.zip.ZipFile;
 
 import static java.lang.Boolean.TRUE;
 import static java.lang.Integer.parseInt;
@@ -1397,7 +1398,10 @@ public abstract class AbstractSurefireMojo
 
     private ResolvePathResultWrapper findModuleDescriptor( File jdkHome, File buildPath, boolean isMainDescriptor )
     {
-        if ( buildPath.isDirectory() && !new File( buildPath, "module-info.class" ).exists() )
+        boolean isJpmsModule =
+            buildPath.isDirectory() ? new File( buildPath, "module-info.class" ).exists() : isModule( buildPath );
+
+        if ( !isJpmsModule )
         {
             return new ResolvePathResultWrapper( null, isMainDescriptor );
         }
@@ -1415,6 +1419,18 @@ public abstract class AbstractSurefireMojo
         }
     }
 
+    private static boolean isModule( File jar )
+    {
+        try ( ZipFile zip = new ZipFile( jar ) )
+        {
+            return zip.getEntry( "module-info.class" ) != null;
+        }
+        catch ( IOException e )
+        {
+            return false;
+        }
+    }
+
     private boolean canExecuteProviderWithModularPath( @Nonnull Platform platform,
                                                        @Nonnull ResolvePathResultWrapper resolvedJavaModularityResult )
     {