You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ma...@apache.org on 2007/10/03 23:07:52 UTC

svn commit: r581724 - in /maven/sandbox/trunk/plugins/maven-shade-plugin/src: main/java/org/apache/maven/plugins/shade/ main/java/org/apache/maven/plugins/shade/mojo/ main/java/org/apache/maven/plugins/shade/relocation/ test/java/org/apache/maven/plugi...

Author: mauro
Date: Wed Oct  3 14:07:51 2007
New Revision: 581724

URL: http://svn.apache.org/viewvc?rev=581724&view=rev
Log:
MSHADE-2:  Enhanced package relocation to have a configurable shaded pattern.

Modified:
    maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
    maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java
    maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java
    maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java
    maven/sandbox/trunk/plugins/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/ShadeMojoTest.java
    maven/sandbox/trunk/plugins/maven-shade-plugin/src/test/projects/shaded-project/pom.xml

Modified: maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java?rev=581724&r1=581723&r2=581724&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java (original)
+++ maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java Wed Oct  3 14:07:51 2007
@@ -59,7 +59,7 @@
     {
         Set resources = new HashSet();
 
-        MyRemapper remapper = new MyRemapper( relocators );
+        RelocatorRemapper remapper = new RelocatorRemapper( relocators );
 
         JarOutputStream jos = new JarOutputStream( new FileOutputStream( uberJar ) );
         
@@ -165,12 +165,12 @@
         IOUtil.close( jos );
     }
 
-    class MyRemapper
+    class RelocatorRemapper
         extends Remapper
     {
         List relocators;
 
-        public MyRemapper( List relocators )
+        public RelocatorRemapper( List relocators )
         {
             this.relocators = relocators;
         }

Modified: maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java?rev=581724&r1=581723&r2=581724&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java (original)
+++ maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java Wed Oct  3 14:07:51 2007
@@ -20,16 +20,26 @@
 
 import java.util.List;
 
-/** @author Jason van Zyl */
+/** 
+ * @author Jason van Zyl 
+ * @author Mauro Talevi
+ */
 public class PackageRelocation
 {
     private String pattern;
 
+    private String shadedPattern;
+
     private List excludes;
 
     public String getPattern()
     {
         return pattern;
+    }
+
+    public String getShadedPattern()
+    {
+        return shadedPattern;
     }
 
     public List getExcludes()

Modified: maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java?rev=581724&r1=581723&r2=581724&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java (original)
+++ maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java Wed Oct  3 14:07:51 2007
@@ -267,14 +267,8 @@
         {
             PackageRelocation r = relocations[i];
 
-            if ( r.getExcludes() != null )
-            {
-                relocators.add( new SimpleRelocator( r.getPattern(), r.getExcludes() ) );
-            }
-            else
-            {
-                relocators.add( new SimpleRelocator( r.getPattern(), null ) );
-            }
+            relocators.add( new SimpleRelocator( r.getPattern(), r.getShadedPattern(), r.getExcludes() ) );
+
         }
         return relocators;
     }

Modified: maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java?rev=581724&r1=581723&r2=581724&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java (original)
+++ maven/sandbox/trunk/plugins/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java Wed Oct  3 14:07:51 2007
@@ -23,32 +23,44 @@
 import java.util.Iterator;
 import java.util.List;
 
-/** @author Jason van Zyl */
+/** 
+ * @author Jason van Zyl 
+ * @author Mauro Talevi
+ */
 public class SimpleRelocator
     implements Relocator
 {
     private String pattern;
+    
+    private String shadedPattern;
 
     private List excludes;
 
-    public SimpleRelocator( String pattern,
-                            List excludes )
+    public SimpleRelocator(String pattern, String shadedPattern, List excludes) 
     {
-        this.pattern = pattern.replace( '.', '/' );
+        this.pattern = pattern.replace('.', '/');
 
-        if ( excludes != null )
+        if ( shadedPattern != null )
+        {
+            this.shadedPattern = shadedPattern.replace('.', '/');            
+        } else 
+        {
+            this.shadedPattern = "hidden/" + pattern;
+        }
+
+        if (excludes != null) 
         {
             this.excludes = new ArrayList();
 
-            for ( Iterator i = excludes.iterator(); i.hasNext(); )
+            for (Iterator i = excludes.iterator(); i.hasNext();) 
             {
                 String e = (String) i.next();
 
-                this.excludes.add( e.replace( '.', '/' ) );
+                this.excludes.add(e.replace('.', '/'));
             }
         }
     }
-
+    
     public boolean canRelocate( String clazz )
     {
         if ( excludes != null )
@@ -74,6 +86,7 @@
 
     public String relocate( String clazz )
     {
-        return "hidden/" + clazz;
+        return clazz.replaceFirst(pattern, shadedPattern);
     }
+
 }

Modified: maven/sandbox/trunk/plugins/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/ShadeMojoTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/ShadeMojoTest.java?rev=581724&r1=581723&r2=581724&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/ShadeMojoTest.java (original)
+++ maven/sandbox/trunk/plugins/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/ShadeMojoTest.java Wed Oct  3 14:07:51 2007
@@ -32,11 +32,26 @@
 import org.codehaus.plexus.PlexusTestCase;
 
 
-/** @author Jason van Zyl */
+/** 
+ * @author Jason van Zyl 
+ * @author Mauro Talevi
+ */
 public class ShadeMojoTest
     extends PlexusTestCase
 {
-    public void testShader()
+    public void testShaderWithDefaultShadedPattern()
+        throws Exception
+    {
+        shaderWithPattern(null, new File( "target/foo-default.jar" ));
+    }
+       
+    public void testShaderWithCustomShadedPattern()
+        throws Exception
+    {
+        shaderWithPattern("org/shaded/plexus/util", new File( "target/foo-custom.jar" ));
+    }
+    
+    public void shaderWithPattern(String shadedPattern, File jar)
         throws Exception
     {
         Shader s = (Shader) lookup( Shader.ROLE );
@@ -47,11 +62,9 @@
 
         set.add( new File( getBasedir(), "src/test/jars/plexus-utils-1.4.1.jar" ) );
 
-        File jar = new File( "target/foo.jar" );
-
         List relocators = new ArrayList();
 
-        relocators.add( new SimpleRelocator( "org/codehaus/plexus/util", Arrays.asList(
+        relocators.add( new SimpleRelocator( "org/codehaus/plexus/util", shadedPattern, Arrays.asList(
             new String[]{"org/codehaus/plexus/util/xml/Xpp3Dom", "org/codehaus/plexus/util/xml/pull.*"} ) ) );
 
         List resourceTransformers = new ArrayList();
@@ -60,4 +73,5 @@
 
         s.shade( set, jar, relocators, resourceTransformers );
     }
+    
 }

Modified: maven/sandbox/trunk/plugins/maven-shade-plugin/src/test/projects/shaded-project/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/plugins/maven-shade-plugin/src/test/projects/shaded-project/pom.xml?rev=581724&r1=581723&r2=581724&view=diff
==============================================================================
--- maven/sandbox/trunk/plugins/maven-shade-plugin/src/test/projects/shaded-project/pom.xml (original)
+++ maven/sandbox/trunk/plugins/maven-shade-plugin/src/test/projects/shaded-project/pom.xml Wed Oct  3 14:07:51 2007
@@ -56,7 +56,8 @@
               </artifactSet>
               <relocations>
                 <relocation>
-                  <pattern>org.codehaus.plexus.util</pattern>
+                  <pattern>org.codehaus.plexus.util</pattern>
+                  <shadedPattern>org.shaded.plexus.util</shadedPattern>
                   <excludes>
                     <exclude>org.codehaus.plexus.util.xml.Xpp3Dom</exclude>
                     <exclude>org.codehaus.plexus.util.xml.pull.*</exclude>