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 );
}
}
}