You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2014/04/25 21:28:29 UTC

svn commit: r1590114 - in /maven/plugins/trunk/maven-shade-plugin/src: main/java/org/apache/maven/plugins/shade/DefaultShader.java test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java

Author: rfscholte
Date: Fri Apr 25 19:28:29 2014
New Revision: 1590114

URL: http://svn.apache.org/r1590114
Log:
formatting

Modified:
    maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
    maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java

Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java?rev=1590114&r1=1590113&r2=1590114&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java Fri Apr 25 19:28:29 2014
@@ -19,25 +19,6 @@ package org.apache.maven.plugins.shade;
  * under the License.
  */
 
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugins.shade.filter.Filter;
-
-import com.google.common.base.Joiner;
-import com.google.common.collect.HashMultimap;
-import com.google.common.collect.Multimap;
-
-import org.apache.maven.plugins.shade.relocation.Relocator;
-import org.apache.maven.plugins.shade.resource.ManifestResourceTransformer;
-import org.apache.maven.plugins.shade.resource.ResourceTransformer;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.logging.AbstractLogEnabled;
-import org.codehaus.plexus.util.IOUtil;
-import org.objectweb.asm.ClassReader;
-import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.ClassWriter;
-import org.objectweb.asm.commons.Remapper;
-import org.objectweb.asm.commons.RemappingClassAdapter;
-
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
@@ -60,6 +41,24 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.zip.ZipException;
 
+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.resource.ManifestResourceTransformer;
+import org.apache.maven.plugins.shade.resource.ResourceTransformer;
+import org.codehaus.plexus.component.annotations.Component;
+import org.codehaus.plexus.logging.AbstractLogEnabled;
+import org.codehaus.plexus.util.IOUtil;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.commons.Remapper;
+import org.objectweb.asm.commons.RemappingClassAdapter;
+
+import com.google.common.base.Joiner;
+import com.google.common.collect.HashMultimap;
+import com.google.common.collect.Multimap;
+
 /**
  * @author Jason van Zyl
  */
@@ -89,7 +88,7 @@ public class DefaultShader
 
         RelocatorRemapper remapper = new RelocatorRemapper( shadeRequest.getRelocators() );
 
-        //noinspection ResultOfMethodCallIgnored
+        // noinspection ResultOfMethodCallIgnored
         shadeRequest.getUberJar().getParentFile().mkdirs();
         FileOutputStream fileOutputStream = new FileOutputStream( shadeRequest.getUberJar() );
         JarOutputStream jos = new JarOutputStream( new BufferedOutputStream( fileOutputStream ) );
@@ -119,7 +118,7 @@ public class DefaultShader
         }
 
         Multimap<String, File> duplicates = HashMultimap.create( 10000, 3 );
-        
+
         for ( File jar : shadeRequest.getJars() )
         {
 
@@ -162,7 +161,7 @@ public class DefaultShader
 
                     if ( name.endsWith( ".class" ) )
                     {
-                    	duplicates.put(name, jar);
+                        duplicates.put( name, jar );
                         addRemappedClass( remapper, jos, jar, name, is );
                     }
                     else if ( shadeRequest.isShadeSourcesContent() && name.endsWith( ".java" ) )
@@ -172,7 +171,7 @@ public class DefaultShader
                         {
                             continue;
                         }
-                        
+
                         addJavaSource( resources, jos, mappedName, is, shadeRequest.getRelocators() );
                     }
                     else
@@ -195,52 +194,53 @@ public class DefaultShader
 
             jarFile.close();
         }
-        
+
         Multimap<Collection<File>, String> overlapping = HashMultimap.create( 20, 15 );
-        
-        for ( String clazz: duplicates.keySet() )
+
+        for ( String clazz : duplicates.keySet() )
         {
-        	Collection<File> jarz = duplicates.get( clazz );
-        	if ( jarz.size() > 1 ) {
-        		overlapping.put( jarz, clazz );
-        	}
+            Collection<File> jarz = duplicates.get( clazz );
+            if ( jarz.size() > 1 )
+            {
+                overlapping.put( jarz, clazz );
+            }
         }
-        
+
         // Log a summary of duplicates
         for ( Collection<File> jarz : overlapping.keySet() )
         {
-        	List<String> jarzS = new LinkedList<String>();
-        	
-        	for (File jjar : jarz)
-        		jarzS.add(jjar.getName());
-        	
-    		List<String> classes = new LinkedList<String>();
-        	
-        	for (String clazz : overlapping.get(jarz))
-    			classes.add(clazz.replace(".class", "").replace("/", "."));
-    		
-    		getLogger().warn( Joiner.on( ", " ).join(jarzS) + " define " + classes.size()
-    				+ " overlappping classes: " );
-    		
-    		int max = 10;
-    		
-    		for ( int i = 0; i < Math.min(max, classes.size()); i++ )
-    			getLogger().warn("  - " + classes.get(i));
-    		
-    		if ( classes.size() > max )
-    			getLogger().warn("  - " + (classes.size() - max) + " more...");
-    		
-        }
-        
-        if (overlapping.keySet().size() > 0) {
-        	getLogger().warn("maven-shade-plugin has detected that some .class files");
-        	getLogger().warn("are present in two or more JARs. When this happens, only");
-        	getLogger().warn("one single version of the class is copied in the uberjar.");
-        	getLogger().warn("Usually this is not harmful and you can skeep these");
-        	getLogger().warn("warnings, otherwise try to manually exclude artifacts");
-        	getLogger().warn("based on mvn dependency:tree -Ddetail=true and the above");
-        	getLogger().warn("output");
-        	getLogger().warn("See http://docs.codehaus.org/display/MAVENUSER/Shade+Plugin");
+            List<String> jarzS = new LinkedList<String>();
+
+            for ( File jjar : jarz )
+                jarzS.add( jjar.getName() );
+
+            List<String> classes = new LinkedList<String>();
+
+            for ( String clazz : overlapping.get( jarz ) )
+                classes.add( clazz.replace( ".class", "" ).replace( "/", "." ) );
+
+            getLogger().warn( Joiner.on( ", " ).join( jarzS ) + " define " + classes.size() + " overlappping classes: " );
+
+            int max = 10;
+
+            for ( int i = 0; i < Math.min( max, classes.size() ); i++ )
+                getLogger().warn( "  - " + classes.get( i ) );
+
+            if ( classes.size() > max )
+                getLogger().warn( "  - " + ( classes.size() - max ) + " more..." );
+
+        }
+
+        if ( overlapping.keySet().size() > 0 )
+        {
+            getLogger().warn( "maven-shade-plugin has detected that some .class files" );
+            getLogger().warn( "are present in two or more JARs. When this happens, only" );
+            getLogger().warn( "one single version of the class is copied in the uberjar." );
+            getLogger().warn( "Usually this is not harmful and you can skeep these" );
+            getLogger().warn( "warnings, otherwise try to manually exclude artifacts" );
+            getLogger().warn( "based on mvn dependency:tree -Ddetail=true and the above" );
+            getLogger().warn( "output" );
+            getLogger().warn( "See http://docs.codehaus.org/display/MAVENUSER/Shade+Plugin" );
         }
 
         for ( ResourceTransformer transformer : transformers )
@@ -258,7 +258,7 @@ public class DefaultShader
             filter.finished();
         }
     }
-    
+
     private JarFile newJarFile( File jar )
         throws IOException
     {
@@ -337,17 +337,22 @@ public class DefaultShader
         // that use the constant pool to determine the dependencies of a class.
         ClassWriter cw = new ClassWriter( 0 );
 
-        final String pkg = name.substring(0, name.lastIndexOf('/') + 1);
-        ClassVisitor cv = new RemappingClassAdapter( cw, remapper ) {
+        final String pkg = name.substring( 0, name.lastIndexOf( '/' ) + 1 );
+        ClassVisitor cv = new RemappingClassAdapter( cw, remapper )
+        {
             @Override
-            public void visitSource(final String source, final String debug) {
-                if (source == null) {
-                    super.visitSource(source, debug);
-                } else {
+            public void visitSource( final String source, final String debug )
+            {
+                if ( source == null )
+                {
+                    super.visitSource( source, debug );
+                }
+                else
+                {
                     final String fqSource = pkg + source;
-                    final String mappedSource = remapper.map(fqSource);
-                    final String filename = mappedSource.substring(mappedSource.lastIndexOf('/') + 1);
-                    super.visitSource(filename, debug);
+                    final String mappedSource = remapper.map( fqSource );
+                    final String filename = mappedSource.substring( mappedSource.lastIndexOf( '/' ) + 1 );
+                    super.visitSource( filename, debug );
                 }
             }
         };
@@ -415,18 +420,18 @@ public class DefaultShader
     }
 
     private void addJavaSource( Set<String> resources, JarOutputStream jos, String name, InputStream is,
-                                    List<Relocator> relocators )
-            throws IOException
+                                List<Relocator> relocators )
+        throws IOException
     {
         jos.putNextEntry( new JarEntry( name ) );
 
         String sourceContent = IOUtil.toString( new InputStreamReader( is, "UTF-8" ) );
-        
+
         for ( Relocator relocator : relocators )
         {
             sourceContent = relocator.applyToSourceContent( sourceContent );
         }
-        
+
         OutputStreamWriter writer = new OutputStreamWriter( jos, "UTF-8" );
         IOUtil.copy( sourceContent, writer );
         writer.flush();

Modified: maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java?rev=1590114&r1=1590113&r2=1590114&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java Fri Apr 25 19:28:29 2014
@@ -20,13 +20,13 @@ package org.apache.maven.plugins.shade;
  */
 
 import java.io.File;
+import java.net.URL;
+import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Set;
-import java.net.URLClassLoader;
-import java.net.URL;
 
 import junit.framework.TestCase;
 
@@ -37,11 +37,8 @@ import org.apache.maven.plugins.shade.re
 import org.apache.maven.plugins.shade.resource.ResourceTransformer;
 import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.logging.console.ConsoleLogger;
-import org.objectweb.asm.Attribute;
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassVisitor;
-import org.objectweb.asm.FieldVisitor;
-import org.objectweb.asm.MethodVisitor;
 import org.objectweb.asm.Opcodes;
 
 /**
@@ -51,8 +48,7 @@ import org.objectweb.asm.Opcodes;
 public class DefaultShaderTest
     extends TestCase
 {
-    private static final String[] EXCLUDES = new String[] {
-        "org/codehaus/plexus/util/xml/Xpp3Dom",
+    private static final String[] EXCLUDES = new String[] { "org/codehaus/plexus/util/xml/Xpp3Dom",
         "org/codehaus/plexus/util/xml/pull.*" };
 
     public void testShaderWithDefaultShadedPattern()
@@ -89,7 +85,7 @@ public class DefaultShaderTest
 
         s.shade( shadeRequest );
 
-        URLClassLoader cl = new URLClassLoader( new URL[]{file.toURI().toURL()} );
+        URLClassLoader cl = new URLClassLoader( new URL[] { file.toURI().toURL() } );
         Class<?> c = cl.loadClass( "hidden.org.apache.maven.plugins.shade.Lib" );
         Object o = c.newInstance();
         assertEquals( "foo.bar/baz", c.getDeclaredField( "CONSTANT" ).get( o ) );
@@ -104,59 +100,64 @@ public class DefaultShaderTest
     public void testShaderWithoutExcludesShouldRemoveReferencesOfOriginalPattern()
         throws Exception
     {
-        //FIXME:  shaded jar should not include references to org/codehaus/* (empty dirs) or org.codehaus.* META-INF files.
-        shaderWithPattern( "org/shaded/plexus/util", new File( "target/foo-custom-without-excludes.jar" ), new String[] {} );
+        // FIXME: shaded jar should not include references to org/codehaus/* (empty dirs) or org.codehaus.* META-INF
+        // files.
+        shaderWithPattern( "org/shaded/plexus/util", new File( "target/foo-custom-without-excludes.jar" ),
+                           new String[] {} );
     }
 
     public void testShaderWithRelocatedClassname()
         throws Exception
     {
-            DefaultShader s = newShader();
+        DefaultShader s = newShader();
 
-            Set<File> set = new LinkedHashSet<File>();
+        Set<File> set = new LinkedHashSet<File>();
 
-            set.add( new File( "src/test/jars/test-project-1.0-SNAPSHOT.jar" ) );
+        set.add( new File( "src/test/jars/test-project-1.0-SNAPSHOT.jar" ) );
 
-            set.add( new File( "src/test/jars/plexus-utils-1.4.1.jar" ) );
+        set.add( new File( "src/test/jars/plexus-utils-1.4.1.jar" ) );
 
-            List<Relocator> relocators = new ArrayList<Relocator>();
+        List<Relocator> relocators = new ArrayList<Relocator>();
 
-            relocators.add( new SimpleRelocator( "org/codehaus/plexus/util/", "_plexus/util/__", null, Arrays.<String> asList() ) );
+        relocators.add( new SimpleRelocator( "org/codehaus/plexus/util/", "_plexus/util/__", null,
+                                             Arrays.<String> asList() ) );
 
-            List<ResourceTransformer> resourceTransformers = new ArrayList<ResourceTransformer>();
+        List<ResourceTransformer> resourceTransformers = new ArrayList<ResourceTransformer>();
 
-            resourceTransformers.add( new ComponentsXmlResourceTransformer() );
+        resourceTransformers.add( new ComponentsXmlResourceTransformer() );
 
-            List<Filter> filters = new ArrayList<Filter>();
+        List<Filter> filters = new ArrayList<Filter>();
+
+        File file = new File( "target/foo-relocate-class.jar" );
 
-            File file = new File( "target/foo-relocate-class.jar" );
+        ShadeRequest shadeRequest = new ShadeRequest();
+        shadeRequest.setJars( set );
+        shadeRequest.setUberJar( file );
+        shadeRequest.setFilters( filters );
+        shadeRequest.setRelocators( relocators );
+        shadeRequest.setResourceTransformers( resourceTransformers );
 
-            ShadeRequest shadeRequest = new ShadeRequest();
-            shadeRequest.setJars( set );
-            shadeRequest.setUberJar( file );
-            shadeRequest.setFilters( filters );
-            shadeRequest.setRelocators( relocators );
-            shadeRequest.setResourceTransformers( resourceTransformers );
+        s.shade( shadeRequest );
 
-            s.shade( shadeRequest );
+        URLClassLoader cl = new URLClassLoader( new URL[] { file.toURI().toURL() } );
+        Class<?> c = cl.loadClass( "_plexus.util.__StringUtils" );
+        // first, ensure it works:
+        Object o = c.newInstance();
+        assertEquals( "", c.getMethod( "clean", String.class ).invoke( o, (String) null ) );
 
-            URLClassLoader cl = new URLClassLoader( new URL[]{file.toURI().toURL()} );
-            Class<?> c = cl.loadClass( "_plexus.util.__StringUtils" );
-            // first, ensure it works:
-            Object o = c.newInstance();
-            assertEquals("", c.getMethod("clean", String.class).invoke(o, (String) null));
-            
-            // now, check that its source file was rewritten:
-            final String[] source = { null };
-            final ClassReader classReader = new ClassReader(cl.getResourceAsStream("_plexus/util/__StringUtils.class"));
-            classReader.accept(new ClassVisitor( Opcodes.ASM4 ) {
-            	@Override
-            	public void visitSource(String arg0, String arg1) {
-            		super.visitSource(arg0, arg1);
-            		source[0] = arg0;
-            	}
-            }, ClassReader.SKIP_CODE);
-            assertEquals("__StringUtils.java", source[0]);
+        // now, check that its source file was rewritten:
+        final String[] source = { null };
+        final ClassReader classReader = new ClassReader( cl.getResourceAsStream( "_plexus/util/__StringUtils.class" ) );
+        classReader.accept( new ClassVisitor( Opcodes.ASM4 )
+        {
+            @Override
+            public void visitSource( String arg0, String arg1 )
+            {
+                super.visitSource( arg0, arg1 );
+                source[0] = arg0;
+            }
+        }, ClassReader.SKIP_CODE );
+        assertEquals( "__StringUtils.java", source[0] );
     }
 
     private void shaderWithPattern( String shadedPattern, File jar, String[] excludes )