You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ol...@apache.org on 2012/07/30 20:56:05 UTC

svn commit: r1367221 - in /maven/plugins/trunk/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/plugins/shad...

Author: olamy
Date: Mon Jul 30 18:56:04 2012
New Revision: 1367221

URL: http://svn.apache.org/viewvc?rev=1367221&view=rev
Log:
[MSHADE-112] New property to enable shading the java text inside the sources artifact (not just shading the java source file locations)
Submitted by Trask Stalnaker.

Modified:
    maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
    maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/Shader.java
    maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java
    maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/Relocator.java
    maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java
    maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/DefaultShaderTest.java
    maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/MockShader.java
    maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/mojo/ShadeMojoTest.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=1367221&r1=1367220&r2=1367221&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 Mon Jul 30 18:56:04 2012
@@ -21,6 +21,7 @@ package org.apache.maven.plugins.shade;
 
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugins.shade.filter.Filter;
+import org.apache.maven.plugins.shade.mojo.PackageRelocation;
 import org.apache.maven.plugins.shade.relocation.Relocator;
 import org.apache.maven.plugins.shade.resource.ManifestResourceTransformer;
 import org.apache.maven.plugins.shade.resource.ResourceTransformer;
@@ -33,10 +34,13 @@ import org.objectweb.asm.ClassWriter;
 import org.objectweb.asm.commons.Remapper;
 import org.objectweb.asm.commons.RemappingClassAdapter;
 
+import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
 import java.util.ArrayList;
 import java.util.Enumeration;
 import java.util.HashSet;
@@ -59,14 +63,13 @@ public class DefaultShader
     implements Shader
 {
 
-    public void shade( Set<File> jars, File uberJar, List<Filter> filters, List<Relocator> relocators,
-                       List<ResourceTransformer> resourceTransformers )
+    public void shade( ShadeRequest shadeRequest )
         throws IOException, MojoExecutionException
     {
         Set resources = new HashSet();
 
         ResourceTransformer manifestTransformer = null;
-        List transformers = new ArrayList( resourceTransformers );
+        List transformers = new ArrayList( shadeRequest.getResourceTransformers() );
         for ( Iterator<ResourceTransformer> it = transformers.iterator(); it.hasNext(); )
         {
             ResourceTransformer transformer = it.next();
@@ -77,14 +80,14 @@ public class DefaultShader
             }
         }
 
-        RelocatorRemapper remapper = new RelocatorRemapper( relocators );
+        RelocatorRemapper remapper = new RelocatorRemapper( shadeRequest.getRelocators() );
 
-        uberJar.getParentFile().mkdirs();
-        JarOutputStream jos = new JarOutputStream( new FileOutputStream( uberJar ) );
+        shadeRequest.getUberJar().getParentFile().mkdirs();
+        JarOutputStream jos = new JarOutputStream( new FileOutputStream( shadeRequest.getUberJar() ) );
 
         if ( manifestTransformer != null )
         {
-            for ( File jar : jars )
+            for ( File jar : shadeRequest.getJars() )
             {
                 JarFile jarFile = newJarFile( jar );
                 for ( Enumeration en = jarFile.entries(); en.hasMoreElements(); )
@@ -94,7 +97,7 @@ public class DefaultShader
                     if ( manifestTransformer.canTransformResource( resource ) )
                     {
                         resources.add( resource );
-                        manifestTransformer.processResource( resource, jarFile.getInputStream( entry ), relocators );
+                        manifestTransformer.processResource( resource, jarFile.getInputStream( entry ), shadeRequest.getRelocators() );
                         break;
                     }
                 }
@@ -105,12 +108,12 @@ public class DefaultShader
             }
         }
 
-        for ( File jar : jars )
+        for ( File jar : shadeRequest.getJars() )
         {
 
             getLogger().debug( "Processing JAR " + jar );
 
-            List jarFilters = getFilters( jar, filters );
+            List jarFilters = getFilters( jar, shadeRequest.getFilters() );
 
             JarFile jarFile = newJarFile( jar );
 
@@ -149,9 +152,19 @@ public class DefaultShader
                     {
                         addRemappedClass( remapper, jos, jar, name, is );
                     }
+                    else if ( shadeRequest.isShadeSourcesContent() && name.endsWith( ".java" ) )
+                    {
+                        // Avoid duplicates
+                        if ( resources.contains( mappedName ) )
+                        {
+                            continue;
+                        }
+                        
+                        addJavaSource( resources, jos, mappedName, is, shadeRequest.getRelocators() );
+                    }
                     else
                     {
-                        if ( !resourceTransformed( transformers, mappedName, is, relocators ) )
+                        if ( !resourceTransformed( transformers, mappedName, is, shadeRequest.getRelocators() ) )
                         {
                             // Avoid duplicates that aren't accounted for by the resource transformers
                             if ( resources.contains( mappedName ) )
@@ -182,7 +195,7 @@ public class DefaultShader
 
         IOUtil.close( jos );
 
-        for ( Filter filter : filters )
+        for ( Filter filter : shadeRequest.getFilters() )
         {
             filter.finished();
         }
@@ -330,6 +343,25 @@ public class DefaultShader
         return resourceTransformed;
     }
 
+    private void addJavaSource( Set resources, JarOutputStream jos, String name, InputStream is,
+                                    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();
+
+        resources.add( name );
+    }
+
     private void addResource( Set resources, JarOutputStream jos, String name, InputStream is )
         throws IOException
     {

Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/Shader.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/Shader.java?rev=1367221&r1=1367220&r2=1367221&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/Shader.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/Shader.java Mon Jul 30 18:56:04 2012
@@ -19,15 +19,9 @@ package org.apache.maven.plugins.shade;
  * under the License.
  */
 
-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.ResourceTransformer;
-
-import java.io.File;
 import java.io.IOException;
-import java.util.List;
-import java.util.Set;
+
+import org.apache.maven.plugin.MojoExecutionException;
 
 /**
  * Interface that defines the process of shading.
@@ -39,15 +33,10 @@ public interface Shader
     /**
      * Perform a shading operation.
      *
-     * @param jars                 which jars
-     * @param uberJar              output jar
-     * @param filters              the filters
-     * @param relocators           the relocators
-     * @param resourceTransformers the transformers
+     * @param shadeRequest            holds the many parameters to this method
      * @throws IOException            for IO errors reading the thing
      * @throws MojoExecutionException for anything else that goes wrong.
      */
-    void shade( Set<File> jars, File uberJar, List<Filter> filters, List<Relocator> relocators,
-                List<ResourceTransformer> resourceTransformers )
+    void shade( ShadeRequest shadeRequest )
         throws IOException, MojoExecutionException;
 }

Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java?rev=1367221&r1=1367220&r2=1367221&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java Mon Jul 30 18:56:04 2012
@@ -38,6 +38,7 @@ import org.apache.maven.plugins.annotati
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.plugins.shade.ShadeRequest;
 import org.apache.maven.plugins.shade.Shader;
 import org.apache.maven.plugins.shade.filter.Filter;
 import org.apache.maven.plugins.shade.filter.MinijarFilter;
@@ -89,18 +90,19 @@ import java.util.Set;
  * @author David Blevins
  * @author Hiram Chirino
  */
-@Mojo(name = "shade", defaultPhase = LifecyclePhase.PACKAGE, threadSafe = false, requiresDependencyResolution = ResolutionScope.RUNTIME)
+@Mojo( name = "shade", defaultPhase = LifecyclePhase.PACKAGE, threadSafe = false,
+       requiresDependencyResolution = ResolutionScope.RUNTIME )
 public class ShadeMojo
     extends AbstractMojo
     implements Contextualizable
 {
-    @Parameter(readonly = true, defaultValue = "${project}")
+    @Parameter( readonly = true, defaultValue = "${project}" )
     private MavenProject project;
 
     @Component
     private MavenProjectHelper projectHelper;
 
-    @Component(hint = "default", role = org.apache.maven.plugins.shade.Shader.class)
+    @Component( hint = "default", role = org.apache.maven.plugins.shade.Shader.class )
     private Shader shader;
 
     /**
@@ -118,7 +120,7 @@ public class ShadeMojo
     /**
      * The current Maven session.
      */
-    @Parameter(readonly = true, defaultValue = "${session}")
+    @Parameter( readonly = true, defaultValue = "${session}" )
     private MavenSession session;
 
     /**
@@ -136,13 +138,13 @@ public class ShadeMojo
     /**
      * Remote repositories which will be searched for source attachments.
      */
-    @Parameter(readonly = true, required = true, defaultValue = "${project.remoteArtifactRepositories}")
+    @Parameter( readonly = true, required = true, defaultValue = "${project.remoteArtifactRepositories}" )
     protected List remoteArtifactRepositories;
 
     /**
      * Local maven repository.
      */
-    @Parameter(readonly = true, required = true, defaultValue = "${localRepository}")
+    @Parameter( readonly = true, required = true, defaultValue = "${localRepository}" )
     protected ArtifactRepository localRepository;
 
     /**
@@ -174,7 +176,6 @@ public class ShadeMojo
      *   &lt;/excludes&gt;
      * &lt;/artifactSet&gt;
      * </pre>
-     *
      */
     @Parameter
     private ArtifactSet artifactSet;
@@ -196,7 +197,6 @@ public class ShadeMojo
      * &lt;/relocations&gt;
      * </pre>
      * <em>Note:</em> Support for includes exists only since version 1.4.
-     *
      */
     @Parameter
     private PackageRelocation[] relocations;
@@ -235,7 +235,7 @@ public class ShadeMojo
     /**
      * The destination directory for the shaded artifact.
      */
-    @Parameter(defaultValue = "${project.build.directory}")
+    @Parameter( defaultValue = "${project.build.directory}" )
     private File outputDirectory;
 
     /**
@@ -253,9 +253,8 @@ public class ShadeMojo
      * the standard version. If the original artifactId was "foo" then the final artifact would
      * be something like foo-1.0.jar. So if you change the artifactId you might have something
      * like foo-special-1.0.jar.
-     *
      */
-    @Parameter(defaultValue = "${project.artifactId}")
+    @Parameter( defaultValue = "${project.artifactId}" )
     private String shadedArtifactId;
 
     /**
@@ -269,7 +268,6 @@ public class ShadeMojo
      * Defines whether the shaded artifact should be attached as classifier to
      * the original artifact.  If false, the shaded jar will be the main artifact
      * of the project
-     *
      */
     @Parameter
     private boolean shadedArtifactAttached;
@@ -279,20 +277,21 @@ public class ShadeMojo
      * have been included into the uber JAR will be removed from the <code>&lt;dependencies&gt;</code> section of the
      * generated POM. The reduced POM will be named <code>dependency-reduced-pom.xml</code> and is stored into the same
      * directory as the shaded artifact. Unless you also specify dependencyReducedPomLocation, the plugin will
-     * create a temporary file named <code>dependency-reduced-pom.xml</code> in the project basedir. 
+     * create a temporary file named <code>dependency-reduced-pom.xml</code> in the project basedir.
      */
-    @Parameter(defaultValue = "true")
+    @Parameter( defaultValue = "true" )
     private boolean createDependencyReducedPom;
-    
-    
+
+
     /**
      * Where to put the dependency reduced pom.
-     *  Note: setting a value for this parameter with a directory other than ${basedir} will change the value of ${basedir}
-     *  for all executions that come after the shade execution. This is often not what you want. This is considered
-     *  an open issue with this plugin.
-     *  @since 1.7
+     * Note: setting a value for this parameter with a directory other than ${basedir} will change the value of ${basedir}
+     * for all executions that come after the shade execution. This is often not what you want. This is considered
+     * an open issue with this plugin.
+     *
+     * @since 1.7
      */
-    @Parameter(defaultValue = "${basedir}/dependency-reduced-pom.xml")
+    @Parameter( defaultValue = "${basedir}/dependency-reduced-pom.xml" )
     private File dependencyReducedPomLocation;
 
     /**
@@ -313,7 +312,7 @@ public class ShadeMojo
     /**
      * The name of the classifier used in case the shaded artifact is attached.
      */
-    @Parameter(defaultValue = "shaded")
+    @Parameter( defaultValue = "shaded" )
     private String shadedClassifierName;
 
     /**
@@ -323,6 +322,15 @@ public class ShadeMojo
     private boolean createSourcesJar;
 
     /**
+     * When true, it will attempt to shade the contents of the java source files when creating the sources jar.
+     * When false, it will just relocate the java source files to the shaded paths, but will not modify the
+     * actual contents of the java source files.
+     *
+     * @parameter expression="${shadeSourcesContent}" default-value="false"
+     */
+    private boolean shadeSourcesContent;
+
+    /**
      * When true, dependencies will be stripped down on the class level to only the transitive hull required for the
      * artifact. <em>Note:</em> Usage of this feature requires Java 1.5 or higher.
      *
@@ -388,8 +396,7 @@ public class ShadeMojo
         ArtifactSelector artifactSelector =
             new ArtifactSelector( project.getArtifact(), artifactSet, shadedGroupFilter );
 
-        if ( artifactSelector.isSelected( project.getArtifact() ) && 
-                        !"pom".equals( project.getArtifact().getType() ) )
+        if ( artifactSelector.isSelected( project.getArtifact() ) && !"pom".equals( project.getArtifact().getType() ) )
         {
             if ( invalidMainArtifact() )
             {
@@ -401,7 +408,8 @@ public class ShadeMojo
                 getLog().error( "- You have bound the goal to a lifecycle phase before \"package\". Please" );
                 getLog().error( "  remove this binding from your POM such that the goal will be run in" );
                 getLog().error( "  the proper phase." );
-                getLog().error( "- You removed the configuration of the maven-jar-plugin that produces the main artifact." );
+                getLog().error(
+                    "- You removed the configuration of the maven-jar-plugin that produces the main artifact." );
                 throw new MojoExecutionException(
                     "Failed to create shaded artifact, " + "project main artifact does not exist." );
             }
@@ -462,11 +470,26 @@ public class ShadeMojo
 
             List<ResourceTransformer> resourceTransformers = getResourceTransformers();
 
-            shader.shade( artifacts, outputJar, filters, relocators, resourceTransformers );
+            ShadeRequest shadeRequest = new ShadeRequest();
+            shadeRequest.setJars( artifacts );
+            shadeRequest.setUberJar( outputJar );
+            shadeRequest.setFilters( filters );
+            shadeRequest.setRelocators( relocators );
+            shadeRequest.setResourceTransformers( resourceTransformers );
+
+            shader.shade( shadeRequest );
 
             if ( createSourcesJar )
             {
-                shader.shade( sourceArtifacts, sourcesJar, filters, relocators, resourceTransformers );
+                ShadeRequest shadeSourcesRequest = new ShadeRequest();
+                shadeSourcesRequest.setJars( sourceArtifacts );
+                shadeSourcesRequest.setUberJar( sourcesJar );
+                shadeSourcesRequest.setFilters( filters );
+                shadeSourcesRequest.setRelocators( relocators );
+                shadeSourcesRequest.setResourceTransformers( resourceTransformers );
+                shadeSourcesRequest.setShadeSourcesContent( shadeSourcesContent );
+
+                shader.shade( shadeSourcesRequest );
             }
 
             if ( outputFile == null )
@@ -525,9 +548,9 @@ public class ShadeMojo
         }
     }
 
-    private boolean invalidMainArtifact( )
+    private boolean invalidMainArtifact()
     {
-        return project.getArtifact().getFile() == null || ! project.getArtifact().getFile().isFile();                                       
+        return project.getArtifact().getFile() == null || !project.getArtifact().getFile().isFile();
     }
 
     private void replaceFile( File oldFile, File newFile )
@@ -848,9 +871,9 @@ public class ShadeMojo
                 if ( dependencyReducedPomLocation == null )
                 {
                     // MSHADE-123: We can't default to 'target' because it messes up uses of ${project.basedir}
-                    dependencyReducedPomLocation = new File ( project.getBasedir(), "dependency-reduced-pom.xml" );
+                    dependencyReducedPomLocation = new File( project.getBasedir(), "dependency-reduced-pom.xml" );
                 }
-                
+
                 File f = dependencyReducedPomLocation;
                 if ( f.exists() )
                 {
@@ -861,10 +884,10 @@ public class ShadeMojo
 
                 String origRelativePath = null;
                 String replaceRelativePath = null;
-                if ( model.getParent() != null)
+                if ( model.getParent() != null )
                 {
                     origRelativePath = model.getParent().getRelativePath();
-                    
+
                 }
                 replaceRelativePath = origRelativePath;
 
@@ -873,20 +896,21 @@ public class ShadeMojo
                     origRelativePath = "../pom.xml";
                 }
 
-                if ( model.getParent() != null ) 
+                if ( model.getParent() != null )
                 {
-                    File parentFile = new File( project.getBasedir(), model.getParent().getRelativePath() ).getCanonicalFile();
+                    File parentFile =
+                        new File( project.getBasedir(), model.getParent().getRelativePath() ).getCanonicalFile();
                     if ( !parentFile.isFile() )
                     {
-                        parentFile = new File( parentFile, "pom.xml");
+                        parentFile = new File( parentFile, "pom.xml" );
                     }
-                    
+
                     parentFile = parentFile.getCanonicalFile();
-                    
+
                     String relPath = RelativizePath.convertToRelativePath( parentFile, f );
                     model.getParent().setRelativePath( relPath );
                 }
-                
+
                 try
                 {
                     PomWriter.write( w, model, true );
@@ -900,11 +924,12 @@ public class ShadeMojo
                     w.close();
                 }
 
-                ProjectBuildingRequest projectBuildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
-                projectBuildingRequest.setLocalRepository(localRepository);
-                projectBuildingRequest.setRemoteRepositories(remoteArtifactRepositories);
+                ProjectBuildingRequest projectBuildingRequest =
+                    new DefaultProjectBuildingRequest( session.getProjectBuildingRequest() );
+                projectBuildingRequest.setLocalRepository( localRepository );
+                projectBuildingRequest.setRemoteRepositories( remoteArtifactRepositories );
 
-                ProjectBuildingResult result = projectBuilder.build(f, projectBuildingRequest);
+                ProjectBuildingResult result = projectBuilder.build( f, projectBuildingRequest );
 
                 modified = updateExcludesInDeps( result.getProject(), dependencies, transitiveDeps );
             }
@@ -929,7 +954,8 @@ public class ShadeMojo
         return groupId + ":" + artifactId + ":" + type + ":" + ( ( classifier != null ) ? classifier : "" );
     }
 
-    public boolean updateExcludesInDeps( MavenProject project, List<Dependency> dependencies, List<Dependency> transitiveDeps )
+    public boolean updateExcludesInDeps( MavenProject project, List<Dependency> dependencies,
+                                         List<Dependency> transitiveDeps )
         throws DependencyTreeBuilderException
     {
         DependencyNode node = dependencyTreeBuilder.buildDependencyTree( project, localRepository, artifactFactory,

Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/Relocator.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/Relocator.java?rev=1367221&r1=1367220&r2=1367221&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/Relocator.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/Relocator.java Mon Jul 30 18:56:04 2012
@@ -31,4 +31,6 @@ public interface Relocator
     boolean canRelocateClass( String clazz );
 
     String relocateClass( String clazz );
+    
+    String applyToSourceContent(String sourceContent);
 }

Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java?rev=1367221&r1=1367220&r2=1367221&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java Mon Jul 30 18:56:04 2012
@@ -195,4 +195,16 @@ public class SimpleRelocator
     {
         return clazz.replaceFirst( pattern, shadedPattern );
     }
+
+	public String applyToSourceContent(String sourceContent)
+	{
+        if ( rawString )
+        {
+        	return sourceContent;
+        }
+        else
+        {
+            return sourceContent.replaceAll( "\\b" + pattern, shadedPattern );
+        }
+	}
 }

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=1367221&r1=1367220&r2=1367221&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 Mon Jul 30 18:56:04 2012
@@ -70,7 +70,15 @@ public class DefaultShaderTest
         List filters = new ArrayList();
 
         File file = new File( "target/testShaderWithStaticInitializedClass.jar" );
-        s.shade( set, file, filters, relocators, resourceTransformers );
+
+        ShadeRequest shadeRequest = new ShadeRequest();
+        shadeRequest.setJars(set);
+        shadeRequest.setUberJar(file);
+        shadeRequest.setFilters(filters);
+        shadeRequest.setRelocators(relocators);
+        shadeRequest.setResourceTransformers(resourceTransformers);
+
+        s.shade( shadeRequest );
 
         URLClassLoader cl = new URLClassLoader( new URL[]{file.toURI().toURL()} );
         Class c = cl.loadClass( "hidden.org.apache.maven.plugins.shade.Lib" );
@@ -112,7 +120,14 @@ public class DefaultShaderTest
 
         List filters = new ArrayList();
 
-        s.shade( set, jar, filters, relocators, resourceTransformers );
+        ShadeRequest shadeRequest = new ShadeRequest();
+        shadeRequest.setJars(set);
+        shadeRequest.setUberJar(jar);
+        shadeRequest.setFilters(filters);
+        shadeRequest.setRelocators(relocators);
+        shadeRequest.setResourceTransformers(resourceTransformers);
+
+        s.shade( shadeRequest );
     }
 
     private static DefaultShader newShader()

Modified: maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/MockShader.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/MockShader.java?rev=1367221&r1=1367220&r2=1367221&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/MockShader.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/MockShader.java Mon Jul 30 18:56:04 2012
@@ -20,6 +20,7 @@ package org.apache.maven.plugins.shade;
 
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugins.shade.filter.Filter;
+import org.apache.maven.plugins.shade.mojo.PackageRelocation;
 import org.apache.maven.plugins.shade.relocation.Relocator;
 import org.apache.maven.plugins.shade.resource.ResourceTransformer;
 import org.codehaus.plexus.component.annotations.Component;
@@ -36,8 +37,7 @@ import java.util.Set;
 public class MockShader
     implements Shader
 {
-    public void shade( Set<File> jars, File uberJar, List<Filter> filters, List<Relocator> relocators,
-                       List<ResourceTransformer> resourceTransformers )
+    public void shade( ShadeRequest shadeRequest )
         throws IOException, MojoExecutionException
     {
         System.out.println( "Executing MockShader#shade" );

Modified: maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/mojo/ShadeMojoTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/mojo/ShadeMojoTest.java?rev=1367221&r1=1367220&r2=1367221&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/mojo/ShadeMojoTest.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/mojo/ShadeMojoTest.java Mon Jul 30 18:56:04 2012
@@ -29,6 +29,7 @@ import org.apache.maven.artifact.resolve
 import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.artifact.resolver.DefaultArtifactResolver;
 import org.apache.maven.artifact.versioning.VersionRange;
+import org.apache.maven.plugins.shade.ShadeRequest;
 import org.apache.maven.plugins.shade.Shader;
 import org.apache.maven.plugins.shade.filter.Filter;
 import org.apache.maven.plugins.shade.relocation.Relocator;
@@ -85,7 +86,14 @@ public class ShadeMojoTest
 
         List filters = new ArrayList();
 
-        s.shade( set, jarFile, filters, relocators, resourceTransformers );
+        ShadeRequest shadeRequest = new ShadeRequest();
+        shadeRequest.setJars(set);
+        shadeRequest.setUberJar(jarFile);
+        shadeRequest.setFilters(filters);
+        shadeRequest.setRelocators(relocators);
+        shadeRequest.setResourceTransformers(resourceTransformers);
+
+        s.shade( shadeRequest );
 
         ClassLoader cl = new URLClassLoader( new URL[]{ jarFile.toURI().toURL() } );
         Class c = cl.loadClass( "org.apache.maven.plugins.shade.Lib" );
@@ -198,7 +206,14 @@ public class ShadeMojoTest
 
         List filters = new ArrayList();
 
-        s.shade( set, jar, filters, relocators, resourceTransformers );
+        ShadeRequest shadeRequest = new ShadeRequest();
+        shadeRequest.setJars(set);
+        shadeRequest.setUberJar(jar);
+        shadeRequest.setFilters(filters);
+        shadeRequest.setRelocators(relocators);
+        shadeRequest.setResourceTransformers(resourceTransformers);
+
+        s.shade( shadeRequest );
     }
 
 }