You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "James Phillpotts (JIRA)" <ji...@apache.org> on 2016/09/30 13:40:20 UTC

[jira] [Created] (MSHADE-237) ServicesResourceTransformer relocates excluded classes

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)