You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2020/02/05 19:40:33 UTC

[maven-shade-plugin] 01/01: [MSHADE-298] Groovy extension module transformer looking in incorrect META-INF directory

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

rfscholte pushed a commit to branch MSHADE-298
in repository https://gitbox.apache.org/repos/asf/maven-shade-plugin.git

commit 799e02abdf936d6f83026403a5ed64e70ad920ef
Author: rfscholte <rf...@apache.org>
AuthorDate: Wed Feb 5 20:40:24 2020 +0100

    [MSHADE-298] Groovy extension module transformer looking in incorrect META-INF directory
---
 .../shade/resource/GroovyResourceTransformer.java     | 15 +++++++--------
 .../shade/resource/GroovyResourceTransformerTest.java | 19 +++++++++----------
 2 files changed, 16 insertions(+), 18 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java
index ced9c71..754834f 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java
@@ -39,7 +39,10 @@ public class GroovyResourceTransformer
     implements ResourceTransformer
 {
 
-    static final String EXT_MODULE_NAME = "META-INF/services/org.codehaus.groovy.runtime.ExtensionModule";
+    static final String EXT_MODULE_NAME_LEGACY = "META-INF/services/org.codehaus.groovy.runtime.ExtensionModule";
+
+    // Since Groovy 2.5.x/Java 9 META-INF/services may only be used by Service Providers
+    static final String EXT_MODULE_NAME = "META-INF/groovy/org.codehaus.groovy.runtime.ExtensionModule";
 
     private List<String> extensionClassesList = new ArrayList<>();
 
@@ -52,7 +55,7 @@ public class GroovyResourceTransformer
     @Override
     public boolean canTransformResource( String resource )
     {
-        return EXT_MODULE_NAME.equals( resource );
+        return EXT_MODULE_NAME.equals( resource ) || EXT_MODULE_NAME_LEGACY.equals( resource );
     }
 
     @Override
@@ -60,13 +63,9 @@ public class GroovyResourceTransformer
         throws IOException
     {
         Properties out = new Properties();
-        try
-        {
-            out.load( is );
-        }
-        finally
+        try ( InputStream props = is )
         {
-            is.close();
+            out.load( props );
         }
         String extensionClasses = out.getProperty( "extensionClasses", "" ).trim();
         if ( extensionClasses.length() > 0 )
diff --git a/src/test/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformerTest.java b/src/test/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformerTest.java
index d19f2b6..b190e86 100644
--- a/src/test/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformerTest.java
+++ b/src/test/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformerTest.java
@@ -73,13 +73,15 @@ public class GroovyResourceTransformerTest
     {
         File tempJar = File.createTempFile( "shade.", ".jar" );
         tempJar.deleteOnExit();
-        FileOutputStream fos = new FileOutputStream( tempJar );
-        JarOutputStream jaos = new JarOutputStream( fos );
-        transformer.modifyOutputStream( jaos );
-        jaos.close();
+
+        try ( FileOutputStream fos = new FileOutputStream( tempJar );
+              JarOutputStream jaos = new JarOutputStream( fos ) )
+        {
+            transformer.modifyOutputStream( jaos );
+        }
+        
         Properties desc = null;
-        JarFile jar = new JarFile( tempJar );
-        try
+        try ( JarFile jar = new JarFile( tempJar ) )
         {
             ZipEntry entry = jar.getEntry( GroovyResourceTransformer.EXT_MODULE_NAME );
             if ( entry != null )
@@ -88,10 +90,6 @@ public class GroovyResourceTransformerTest
                 desc.load( jar.getInputStream( entry ) );
             }
         }
-        finally
-        {
-            jar.close();
-        }
         return desc;
     }
 
@@ -100,6 +98,7 @@ public class GroovyResourceTransformerTest
     {
         GroovyResourceTransformer transformer = new GroovyResourceTransformer();
         assertTrue( transformer.canTransformResource( GroovyResourceTransformer.EXT_MODULE_NAME ) );
+        assertTrue( transformer.canTransformResource( GroovyResourceTransformer.EXT_MODULE_NAME_LEGACY ) );
         assertFalse( transformer.canTransformResource( "somethingElse" ) );
         assertFalse( transformer.canTransformResource( JarFile.MANIFEST_NAME ) );
     }