James Phillpotts created MSHADE-237:
---------------------------------------
Summary: ServicesResourceTransformer relocates excluded classes
Key: MSHADE-237
URL: https://issues.apache.org/jira/browse/MSHADE-237
Project: Maven Shade Plugin
Issue Type: Bug
Affects Versions: 2.4.3, 3.0.0
Reporter: James Phillpotts
If an exclude pattern is specified on a relocator, the
{{ServicesResourceTransformer}} ignores them.
This is demonstrated by the test, and fixed in the following:
{noformat}
Index:
src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java
===================================================================
---
src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java
(revision 1762668)
+++
src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java
(working copy)
@@ -86,7 +86,10 @@
String relContent = line;
for ( Relocator relocator : relocators )
{
- relContent = relocator.applyToSourceContent( relContent );
+ if ( relocator.canRelocateClass(relContent) )
+ {
+ relContent = relocator.relocateClass(relContent);
+ }
}
fout.append( relContent + "\n" );
}
Index:
src/test/java/org/apache/maven/plugins/shade/resource/ServiceResourceTransformerTest.java
===================================================================
---
src/test/java/org/apache/maven/plugins/shade/resource/ServiceResourceTransformerTest.java
(revision 1762668)
+++
src/test/java/org/apache/maven/plugins/shade/resource/ServiceResourceTransformerTest.java
(working copy)
@@ -27,6 +27,7 @@
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
+import java.util.Collections;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
@@ -46,10 +47,11 @@
@Test
public void relocatedClasses() throws Exception {
- SimpleRelocator relocator = new SimpleRelocator("org.foo", "borg.foo",
null, null);
+ SimpleRelocator relocator = new SimpleRelocator("org.foo", "borg.foo",
null,
+ Collections.singletonList("org.foo.exclude.**"));
List<Relocator> relocators = Lists.<Relocator>newArrayList( relocator
);
- String content = "org.foo.Service\n";
+ String content = "org.foo.Service\norg.foo.exclude.OtherService\n";
byte[] contentBytes = content.getBytes( "UTF-8" );
InputStream contentStream = new ByteArrayInputStream( contentBytes );
String contentResource = "META-INF/services/org.foo.something.another";
@@ -73,7 +75,8 @@
InputStream entryStream = jarFile.getInputStream( jarEntry );
try {
String xformedContent = IOUtils.toString(entryStream, "utf-8");
- assertEquals("borg.foo.Service" + System.getProperty(
"line.separator" ), xformedContent);
+ assertEquals("borg.foo.Service" + System.getProperty(
"line.separator" )
+ + "org.foo.exclude.OtherService" + System.getProperty(
"line.separator" ), xformedContent);
} finally {
IOUtils.closeQuietly( entryStream );
jarFile.close();
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)