Skip to content

Commit 799e02a

Browse files
committed
[MSHADE-298] Groovy extension module transformer looking in incorrect META-INF directory
1 parent aba5b7c commit 799e02a

File tree

2 files changed

+16
-18
lines changed

2 files changed

+16
-18
lines changed

src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ public class GroovyResourceTransformer
3939
implements ResourceTransformer
4040
{
4141

42-
static final String EXT_MODULE_NAME = "META-INF/services/org.codehaus.groovy.runtime.ExtensionModule";
42+
static final String EXT_MODULE_NAME_LEGACY = "META-INF/services/org.codehaus.groovy.runtime.ExtensionModule";
43+
44+
// Since Groovy 2.5.x/Java 9 META-INF/services may only be used by Service Providers
45+
static final String EXT_MODULE_NAME = "META-INF/groovy/org.codehaus.groovy.runtime.ExtensionModule";
4346

4447
private List<String> extensionClassesList = new ArrayList<>();
4548

@@ -52,21 +55,17 @@ public class GroovyResourceTransformer
5255
@Override
5356
public boolean canTransformResource( String resource )
5457
{
55-
return EXT_MODULE_NAME.equals( resource );
58+
return EXT_MODULE_NAME.equals( resource ) || EXT_MODULE_NAME_LEGACY.equals( resource );
5659
}
5760

5861
@Override
5962
public void processResource( String resource, InputStream is, List<Relocator> relocators )
6063
throws IOException
6164
{
6265
Properties out = new Properties();
63-
try
64-
{
65-
out.load( is );
66-
}
67-
finally
66+
try ( InputStream props = is )
6867
{
69-
is.close();
68+
out.load( props );
7069
}
7170
String extensionClasses = out.getProperty( "extensionClasses", "" ).trim();
7271
if ( extensionClasses.length() > 0 )

src/test/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformerTest.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,15 @@ private static Properties transform( GroovyResourceTransformer transformer )
7373
{
7474
File tempJar = File.createTempFile( "shade.", ".jar" );
7575
tempJar.deleteOnExit();
76-
FileOutputStream fos = new FileOutputStream( tempJar );
77-
JarOutputStream jaos = new JarOutputStream( fos );
78-
transformer.modifyOutputStream( jaos );
79-
jaos.close();
76+
77+
try ( FileOutputStream fos = new FileOutputStream( tempJar );
78+
JarOutputStream jaos = new JarOutputStream( fos ) )
79+
{
80+
transformer.modifyOutputStream( jaos );
81+
}
82+
8083
Properties desc = null;
81-
JarFile jar = new JarFile( tempJar );
82-
try
84+
try ( JarFile jar = new JarFile( tempJar ) )
8385
{
8486
ZipEntry entry = jar.getEntry( GroovyResourceTransformer.EXT_MODULE_NAME );
8587
if ( entry != null )
@@ -88,10 +90,6 @@ private static Properties transform( GroovyResourceTransformer transformer )
8890
desc.load( jar.getInputStream( entry ) );
8991
}
9092
}
91-
finally
92-
{
93-
jar.close();
94-
}
9593
return desc;
9694
}
9795

@@ -100,6 +98,7 @@ public void testFilter()
10098
{
10199
GroovyResourceTransformer transformer = new GroovyResourceTransformer();
102100
assertTrue( transformer.canTransformResource( GroovyResourceTransformer.EXT_MODULE_NAME ) );
101+
assertTrue( transformer.canTransformResource( GroovyResourceTransformer.EXT_MODULE_NAME_LEGACY ) );
103102
assertFalse( transformer.canTransformResource( "somethingElse" ) );
104103
assertFalse( transformer.canTransformResource( JarFile.MANIFEST_NAME ) );
105104
}

0 commit comments

Comments
 (0)