You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2020/05/13 00:54:11 UTC

[maven-shade-plugin] branch MSHADE-364 updated (035ed39 -> e2ddd07)

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

hboutemy pushed a change to branch MSHADE-364
in repository https://gitbox.apache.org/repos/asf/maven-shade-plugin.git.


    omit 035ed39  dropping some finals, fixing some english wordings (plural/singular)
    omit 6a8986d  drop duplicate resource warning when the resource is handled by a transformer
     new 34f0272  [MSHADE-364] drop duplicate resource warning when the resource is handled by a transformer
     new e2ddd07  dropping some finals, fixing some english wordings (plural/singular)

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (035ed39)
            \
             N -- N -- N   refs/heads/MSHADE-364 (e2ddd07)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:


[maven-shade-plugin] 02/02: dropping some finals, fixing some english wordings (plural/singular)

Posted by hb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit e2ddd0713b91f6692ba007c848dbf172bd9f4d3c
Author: Romain Manni-Bucau <rm...@gmail.com>
AuthorDate: Tue May 12 17:13:57 2020 +0200

    dropping some finals, fixing some english wordings (plural/singular)
---
 .../apache/maven/plugins/shade/DefaultShader.java  | 18 ++++++++--
 .../maven/plugins/shade/DefaultShaderTest.java     | 42 +++++++++++-----------
 2 files changed, 37 insertions(+), 23 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java b/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
index ffd902d..2905e02 100644
--- a/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
+++ b/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
@@ -342,11 +342,25 @@ public class DefaultShader
             final Collection<String> overlaps = new ArrayList<>();
             if ( !classes.isEmpty() )
             {
-                overlaps.add( "classes" );
+                if ( resources.size() == 1 )
+                {
+                    overlaps.add( "classe" );
+                }
+                else
+                {
+                    overlaps.add( "classes" );
+                }
             }
             if ( !resources.isEmpty() )
             {
-                overlaps.add( "resources" );
+                if ( resources.size() == 1 )
+                {
+                    overlaps.add( "resource" );
+                }
+                else
+                {
+                    overlaps.add( "resources" );
+                }
             }
 
             final List<String> all = new ArrayList<>( classes.size() + resources.size() );
diff --git a/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java b/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java
index b1aaae5..012a366 100644
--- a/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java
+++ b/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java
@@ -85,7 +85,7 @@ public class DefaultShaderTest
 
         final String failureWarnMessage = logs.warnMessages.toString();
         assertTrue(failureWarnMessage, logs.warnMessages.contains(
-                "plexus-utils-1.4.1.jar, test-project-1.0-SNAPSHOT.jar define 1 overlapping resources:"));
+                "plexus-utils-1.4.1.jar, test-project-1.0-SNAPSHOT.jar define 1 overlapping resource:"));
         assertTrue(failureWarnMessage, logs.warnMessages.contains("- META-INF/MANIFEST.MF"));
 
         final String failureDebugMessage = logs.debugMessages.toString();
@@ -94,18 +94,18 @@ public class DefaultShaderTest
     }
 
     public void testOverlappingResourcesAreLoggedExceptATransformerHandlesIt() throws Exception {
-        final TemporaryFolder temporaryFolder = new TemporaryFolder();
-        final Set<File> set = new LinkedHashSet<>();
+        TemporaryFolder temporaryFolder = new TemporaryFolder();
+        Set<File> set = new LinkedHashSet<>();
         temporaryFolder.create();
-        final File j1 = temporaryFolder.newFile("j1.jar");
-        try (final JarOutputStream jos = new JarOutputStream(new FileOutputStream( j1 ) ) )
+        File j1 = temporaryFolder.newFile("j1.jar");
+        try ( JarOutputStream jos = new JarOutputStream(new FileOutputStream( j1 ) ) )
         {
             jos.putNextEntry(new JarEntry( "foo.txt" ));
             jos.write("c1".getBytes(StandardCharsets.UTF_8));
             jos.closeEntry();
         }
-        final File j2 = temporaryFolder.newFile("j2.jar");
-        try (final JarOutputStream jos = new JarOutputStream(new FileOutputStream( j2 ) ) )
+        File j2 = temporaryFolder.newFile("j2.jar");
+        try ( JarOutputStream jos = new JarOutputStream(new FileOutputStream( j2 ) ) )
         {
             jos.putNextEntry(new JarEntry( "foo.txt" ));
             jos.write("c2".getBytes(StandardCharsets.UTF_8));
@@ -114,25 +114,25 @@ public class DefaultShaderTest
         set.add( j1 );
         set.add( j2 );
 
-        final AppendingTransformer transformer = new AppendingTransformer();
-        final Field resource = AppendingTransformer.class.getDeclaredField( "resource" );
+        AppendingTransformer transformer = new AppendingTransformer();
+        Field resource = AppendingTransformer.class.getDeclaredField( "resource" );
         resource.setAccessible( true );
         resource.set( transformer, "foo.txt" );
 
-        final ShadeRequest shadeRequest = new ShadeRequest();
+        ShadeRequest shadeRequest = new ShadeRequest();
         shadeRequest.setJars( set );
         shadeRequest.setRelocators( Collections.<Relocator>emptyList() );
         shadeRequest.setResourceTransformers( Collections.<ResourceTransformer>singletonList( transformer) );
         shadeRequest.setFilters( Collections.<Filter>emptyList() );
         shadeRequest.setUberJar( new File( "target/foo-custom_testOverlappingResourcesAreLogged.jar" ) );
 
-        final DefaultShader shaderWithTransformer = new DefaultShader();
+        DefaultShader shaderWithTransformer = new DefaultShader();
         final MockLogger logWithTransformer = new MockLogger();
         shaderWithTransformer.enableLogging( logWithTransformer );
         shaderWithTransformer.shade( shadeRequest );
 
-        final DefaultShader shaderWithoutTransformer = new DefaultShader();
-        final MockLogger logWithoutTransformer = new MockLogger();
+        DefaultShader shaderWithoutTransformer = new DefaultShader();
+        MockLogger logWithoutTransformer = new MockLogger();
         shaderWithoutTransformer.enableLogging( logWithoutTransformer );
         shadeRequest.setResourceTransformers( Collections.<ResourceTransformer>emptyList() );
         shaderWithoutTransformer.shade( shadeRequest );
@@ -141,7 +141,7 @@ public class DefaultShaderTest
 
         assertTrue(logWithTransformer.warnMessages.toString(), logWithTransformer.warnMessages.isEmpty());
         assertTrue(logWithoutTransformer.warnMessages.toString(), logWithoutTransformer.warnMessages.containsAll(
-               Arrays.<String>asList( "j1.jar, j2.jar define 1 overlapping resources:", "- foo.txt" ) ) );
+               Arrays.<String>asList( "j1.jar, j2.jar define 1 overlapping resource:", "- foo.txt" ) ) );
     }
 
     public void testShaderWithDefaultShadedPattern()
@@ -300,43 +300,43 @@ public class DefaultShaderTest
         private final List<String> debugMessages = new ArrayList<>();
         private final List<String> warnMessages = new ArrayList<>();
 
-        public MockLogger()
+        private MockLogger()
         {
             super( Logger.LEVEL_INFO, "test" );
         }
 
         @Override
-        public void debug( final String s, final Throwable throwable )
+        public void debug( String s, Throwable throwable )
         {
             debugMessages.add( s.replace( '\\', '/' ).trim() );
         }
 
         @Override
-        public void info( final String s, final Throwable throwable )
+        public void info( String s, Throwable throwable )
         {
             // no-op
         }
 
         @Override
-        public void warn( final String s, final Throwable throwable )
+        public void warn( String s, Throwable throwable )
         {
             warnMessages.add( s.replace( '\\', '/' ).trim() );
         }
 
         @Override
-        public void error( final String s, final Throwable throwable )
+        public void error( String s, Throwable throwable )
         {
             // no-op
         }
 
         @Override
-        public void fatalError( final String s, final Throwable throwable )
+        public void fatalError( String s, Throwable throwable )
         {
             // no-op
         }
 
         @Override
-        public Logger getChildLogger( final String s )
+        public Logger getChildLogger( String s )
         {
             return this;
         }


[maven-shade-plugin] 01/02: [MSHADE-364] drop duplicate resource warning when the resource is handled by a transformer

Posted by hb...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 34f0272576fe33726c74bf2af1c6ff77e4f3c249
Author: Romain Manni-Bucau <rm...@gmail.com>
AuthorDate: Tue May 12 13:55:10 2020 +0200

    [MSHADE-364] drop duplicate resource warning when the resource is
    handled by a transformer
---
 .../apache/maven/plugins/shade/DefaultShader.java  |   4 +
 .../maven/plugins/shade/DefaultShaderTest.java     | 159 +++++++++++++++------
 2 files changed, 117 insertions(+), 46 deletions(-)

diff --git a/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java b/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
index f5897c3..ffd902d 100644
--- a/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
+++ b/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
@@ -256,6 +256,10 @@ public class DefaultShader
 
                     addResource( resources, jos, mappedName, entry.getTime(), in );
                 }
+                else
+                {
+                    duplicates.remove( name, jar );
+                }
             }
         }
     }
diff --git a/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java b/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java
index efeffe5..b1aaae5 100644
--- a/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java
+++ b/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java
@@ -20,15 +20,20 @@ package org.apache.maven.plugins.shade;
  */
 
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
+import java.lang.reflect.Field;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarOutputStream;
 
 import junit.framework.TestCase;
 
@@ -36,11 +41,15 @@ import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugins.shade.filter.Filter;
 import org.apache.maven.plugins.shade.relocation.Relocator;
 import org.apache.maven.plugins.shade.relocation.SimpleRelocator;
+import org.apache.maven.plugins.shade.resource.AppendingTransformer;
 import org.apache.maven.plugins.shade.resource.ComponentsXmlResourceTransformer;
+import org.apache.maven.plugins.shade.resource.ManifestResourceTransformer;
 import org.apache.maven.plugins.shade.resource.ResourceTransformer;
 import org.codehaus.plexus.logging.AbstractLogger;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.Opcodes;
@@ -57,47 +66,8 @@ public class DefaultShaderTest
 
     public void testOverlappingResourcesAreLogged() throws IOException, MojoExecutionException {
         final DefaultShader shader = new DefaultShader();
-        final List<String> debugMessages = new ArrayList<>();
-        final List<String> warnMessages = new ArrayList<>();
-        shader.enableLogging( new AbstractLogger(
-                Logger.LEVEL_INFO, "TEST_DefaultShaderTest_testOverlappingResourcesAreLogged" )
-        {
-            @Override
-            public void debug( final String s, final Throwable throwable )
-            {
-                debugMessages.add( s.replace( '\\', '/' ).trim() );
-            }
-
-            @Override
-            public void info( final String s, final Throwable throwable )
-            {
-                // no-op
-            }
-
-            @Override
-            public void warn( final String s, final Throwable throwable )
-            {
-                warnMessages.add( s.replace( '\\', '/' ).trim() );
-            }
-
-            @Override
-            public void error( final String s, final Throwable throwable )
-            {
-                // no-op
-            }
-
-            @Override
-            public void fatalError( final String s, final Throwable throwable )
-            {
-                // no-op
-            }
-
-            @Override
-            public Logger getChildLogger( final String s )
-            {
-                return this;
-            }
-        });
+        final MockLogger logs = new MockLogger();
+        shader.enableLogging(logs);
 
         // we will shade two jars and expect to see META-INF/MANIFEST.MF overlaps, this will always be true
         // but this can lead to a broken deployment if intended for OSGi or so, so even this should be logged
@@ -113,16 +83,67 @@ public class DefaultShaderTest
         shadeRequest.setUberJar( new File( "target/foo-custom_testOverlappingResourcesAreLogged.jar" ) );
         shader.shade( shadeRequest );
 
-        final String failureWarnMessage = warnMessages.toString();
-        assertTrue(failureWarnMessage, warnMessages.contains(
+        final String failureWarnMessage = logs.warnMessages.toString();
+        assertTrue(failureWarnMessage, logs.warnMessages.contains(
                 "plexus-utils-1.4.1.jar, test-project-1.0-SNAPSHOT.jar define 1 overlapping resources:"));
-        assertTrue(failureWarnMessage, warnMessages.contains("- META-INF/MANIFEST.MF"));
+        assertTrue(failureWarnMessage, logs.warnMessages.contains("- META-INF/MANIFEST.MF"));
 
-        final String failureDebugMessage = debugMessages.toString();
-        assertTrue(failureDebugMessage, debugMessages.contains(
+        final String failureDebugMessage = logs.debugMessages.toString();
+        assertTrue(failureDebugMessage, logs.debugMessages.contains(
                 "We have a duplicate META-INF/MANIFEST.MF in src/test/jars/plexus-utils-1.4.1.jar" ));
     }
 
+    public void testOverlappingResourcesAreLoggedExceptATransformerHandlesIt() throws Exception {
+        final TemporaryFolder temporaryFolder = new TemporaryFolder();
+        final Set<File> set = new LinkedHashSet<>();
+        temporaryFolder.create();
+        final File j1 = temporaryFolder.newFile("j1.jar");
+        try (final JarOutputStream jos = new JarOutputStream(new FileOutputStream( j1 ) ) )
+        {
+            jos.putNextEntry(new JarEntry( "foo.txt" ));
+            jos.write("c1".getBytes(StandardCharsets.UTF_8));
+            jos.closeEntry();
+        }
+        final File j2 = temporaryFolder.newFile("j2.jar");
+        try (final JarOutputStream jos = new JarOutputStream(new FileOutputStream( j2 ) ) )
+        {
+            jos.putNextEntry(new JarEntry( "foo.txt" ));
+            jos.write("c2".getBytes(StandardCharsets.UTF_8));
+            jos.closeEntry();
+        }
+        set.add( j1 );
+        set.add( j2 );
+
+        final AppendingTransformer transformer = new AppendingTransformer();
+        final Field resource = AppendingTransformer.class.getDeclaredField( "resource" );
+        resource.setAccessible( true );
+        resource.set( transformer, "foo.txt" );
+
+        final ShadeRequest shadeRequest = new ShadeRequest();
+        shadeRequest.setJars( set );
+        shadeRequest.setRelocators( Collections.<Relocator>emptyList() );
+        shadeRequest.setResourceTransformers( Collections.<ResourceTransformer>singletonList( transformer) );
+        shadeRequest.setFilters( Collections.<Filter>emptyList() );
+        shadeRequest.setUberJar( new File( "target/foo-custom_testOverlappingResourcesAreLogged.jar" ) );
+
+        final DefaultShader shaderWithTransformer = new DefaultShader();
+        final MockLogger logWithTransformer = new MockLogger();
+        shaderWithTransformer.enableLogging( logWithTransformer );
+        shaderWithTransformer.shade( shadeRequest );
+
+        final DefaultShader shaderWithoutTransformer = new DefaultShader();
+        final MockLogger logWithoutTransformer = new MockLogger();
+        shaderWithoutTransformer.enableLogging( logWithoutTransformer );
+        shadeRequest.setResourceTransformers( Collections.<ResourceTransformer>emptyList() );
+        shaderWithoutTransformer.shade( shadeRequest );
+
+        temporaryFolder.delete();
+
+        assertTrue(logWithTransformer.warnMessages.toString(), logWithTransformer.warnMessages.isEmpty());
+        assertTrue(logWithoutTransformer.warnMessages.toString(), logWithoutTransformer.warnMessages.containsAll(
+               Arrays.<String>asList( "j1.jar, j2.jar define 1 overlapping resources:", "- foo.txt" ) ) );
+    }
+
     public void testShaderWithDefaultShadedPattern()
         throws Exception
     {
@@ -274,4 +295,50 @@ public class DefaultShaderTest
         return s;
     }
 
+    private static class MockLogger extends AbstractLogger
+    {
+        private final List<String> debugMessages = new ArrayList<>();
+        private final List<String> warnMessages = new ArrayList<>();
+
+        public MockLogger()
+        {
+            super( Logger.LEVEL_INFO, "test" );
+        }
+
+        @Override
+        public void debug( final String s, final Throwable throwable )
+        {
+            debugMessages.add( s.replace( '\\', '/' ).trim() );
+        }
+
+        @Override
+        public void info( final String s, final Throwable throwable )
+        {
+            // no-op
+        }
+
+        @Override
+        public void warn( final String s, final Throwable throwable )
+        {
+            warnMessages.add( s.replace( '\\', '/' ).trim() );
+        }
+
+        @Override
+        public void error( final String s, final Throwable throwable )
+        {
+            // no-op
+        }
+
+        @Override
+        public void fatalError( final String s, final Throwable throwable )
+        {
+            // no-op
+        }
+
+        @Override
+        public Logger getChildLogger( final String s )
+        {
+            return this;
+        }
+    }
 }