You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2019/05/12 07:28:05 UTC

[maven-shade-plugin] 01/01: [MSHADE-318] - Include transitive dependencies o Includes all transitive dependencies of specifically included classes.

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

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

commit c4f9699f40b3c44d8fca8e20615aa7c82636de36
Author: Markus KARG <ma...@headcrashing.eu>
AuthorDate: Sun Apr 14 09:16:26 2019 +0000

    [MSHADE-318] - Include transitive dependencies
     o Includes all transitive dependencies of specifically included classes.
---
 ...ExemptedClass.java => SomeDependencyOfExemptedClass.java} |  2 +-
 .../dependency/src/main/java/x/y/z/SomeExemptedClass.java    |  1 +
 src/it/MSHADE-316/verify.bsh                                 |  3 ++-
 .../org/apache/maven/plugins/shade/filter/MinijarFilter.java | 12 ++++--------
 4 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/src/it/MSHADE-316/dependency/src/main/java/x/y/z/SomeExemptedClass.java b/src/it/MSHADE-316/dependency/src/main/java/x/y/z/SomeDependencyOfExemptedClass.java
similarity index 95%
copy from src/it/MSHADE-316/dependency/src/main/java/x/y/z/SomeExemptedClass.java
copy to src/it/MSHADE-316/dependency/src/main/java/x/y/z/SomeDependencyOfExemptedClass.java
index f5ee280..5c39166 100644
--- a/src/it/MSHADE-316/dependency/src/main/java/x/y/z/SomeExemptedClass.java
+++ b/src/it/MSHADE-316/dependency/src/main/java/x/y/z/SomeDependencyOfExemptedClass.java
@@ -19,6 +19,6 @@
 
 package x.y.z;
 
-public class SomeExemptedClass
+public class SomeDependencyOfExemptedClass
 {
 }
diff --git a/src/it/MSHADE-316/dependency/src/main/java/x/y/z/SomeExemptedClass.java b/src/it/MSHADE-316/dependency/src/main/java/x/y/z/SomeExemptedClass.java
index f5ee280..86e0a01 100644
--- a/src/it/MSHADE-316/dependency/src/main/java/x/y/z/SomeExemptedClass.java
+++ b/src/it/MSHADE-316/dependency/src/main/java/x/y/z/SomeExemptedClass.java
@@ -21,4 +21,5 @@ package x.y.z;
 
 public class SomeExemptedClass
 {
+    public SomeDependencyOfExemptedClass essentialDependency;
 }
diff --git a/src/it/MSHADE-316/verify.bsh b/src/it/MSHADE-316/verify.bsh
index 04919e0..1e57068 100644
--- a/src/it/MSHADE-316/verify.bsh
+++ b/src/it/MSHADE-316/verify.bsh
@@ -24,7 +24,8 @@ String[] wanted =
     "Main.class",
     "SomeUsedClass.class",
     "x/y/z/SomeExemptedClass.class",
-    "x/y/z/AnotherExemptedClass.class"
+    "x/y/z/AnotherExemptedClass.class",
+    "x/y/z/SomeDependencyOfExemptedClass.class"
 };
 
 String[] unwanted =
diff --git a/src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java b/src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java
index 10606d2..608924b 100644
--- a/src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java
+++ b/src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java
@@ -38,7 +38,6 @@ import java.io.InputStreamReader;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 import java.util.jar.JarEntry;
@@ -171,7 +170,7 @@ public class MinijarFilter
                                     }
 
                                     log.debug( className + " was not removed because it is a service" );
-                                    removeClass( cp, clazz );
+                                    removeClass( clazz );
                                     repeatScan = true; // check whether the found classes use services in turn
                                 }
                             }
@@ -195,7 +194,7 @@ public class MinijarFilter
         while ( repeatScan );
     }
 
-    private void removeClass( final Clazzpath clazzPath, final Clazz clazz )
+    private void removeClass( final Clazz clazz )
     {
         removable.remove( clazz );
         removable.removeAll( clazz.getTransitiveDependencies() );
@@ -267,16 +266,13 @@ public class MinijarFilter
                     if ( depClazzpathUnit != null )
                     {
                         Set<Clazz> clazzes = depClazzpathUnit.getClazzes();
-                        Iterator<Clazz> j = removable.iterator();
-                        while ( j.hasNext() )
+                        for ( final Clazz clazz : new HashSet<>( removable ) )
                         {
-                            Clazz clazz = j.next();
-
                             if ( clazzes.contains( clazz ) //
                                 && simpleFilter.isSpecificallyIncluded( clazz.getName().replace( '.', '/' ) ) )
                             {
                                 log.debug( clazz.getName() + " not removed because it was specifically included" );
-                                j.remove();
+                                removeClass( clazz );
                             }
                         }
                     }