You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by bi...@apache.org on 2011/11/20 23:17:34 UTC
svn commit: r1204282 - in /maven/plugins/trunk/maven-shade-plugin/src:
main/java/org/apache/maven/plugins/shade/mojo/
main/java/org/apache/maven/plugins/shade/relocation/
test/java/org/apache/maven/plugins/shade/relocation/
Author: bimargulies
Date: Sun Nov 20 22:17:34 2011
New Revision: 1204282
URL: http://svn.apache.org/viewvc?rev=1204282&view=rev
Log:
MSHADE-104: Cannot shade aspectj library
o allow for relocating 'raw' (non-mangled-class-name) strings.
o fix regex internal confusion.
Modified:
maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.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/SimpleRelocator.java
maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java
Modified: maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java?rev=1204282&r1=1204281&r2=1204282&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/PackageRelocation.java Sun Nov 20 22:17:34 2011
@@ -34,6 +34,8 @@ public class PackageRelocation
private List includes;
private List excludes;
+
+ private boolean rawString;
public String getPattern()
{
@@ -54,4 +56,9 @@ public class PackageRelocation
{
return excludes;
}
+
+ public boolean isRawString()
+ {
+ return rawString;
+ }
}
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=1204282&r1=1204281&r2=1204282&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 Sun Nov 20 22:17:34 2011
@@ -613,7 +613,7 @@ public class ShadeMojo
{
PackageRelocation r = relocations[i];
- relocators.add( new SimpleRelocator( r.getPattern(), r.getShadedPattern(), r.getIncludes(), r.getExcludes() ) );
+ relocators.add( new SimpleRelocator( r.getPattern(), r.getShadedPattern(), r.getIncludes(), r.getExcludes(), r.isRawString() ) );
}
return relocators;
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=1204282&r1=1204281&r2=1204282&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 Sun Nov 20 22:17:34 2011
@@ -24,6 +24,7 @@ import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
+import java.util.regex.Pattern;
import org.codehaus.plexus.util.SelectorUtils;
@@ -46,21 +47,41 @@ public class SimpleRelocator
private final Set includes;
private final Set excludes;
+
+ private final boolean rawString;
public SimpleRelocator( String patt, String shadedPattern, List includes, List excludes )
{
- this.pattern = patt.replace( '/', '.' );
- this.pathPattern = patt.replace( '.', '/' );
-
- if ( shadedPattern != null )
+ this( patt, shadedPattern, includes, excludes, false );
+ }
+
+ public SimpleRelocator( String patt, String shadedPattern, List includes, List excludes, boolean rawString )
+ {
+ this.rawString = rawString;
+
+ if ( rawString )
{
- this.shadedPattern = shadedPattern.replace( '/', '.' );
- this.shadedPathPattern = shadedPattern.replace( '.', '/' );
+ this.pathPattern = patt;
+ this.shadedPathPattern = shadedPattern;
+
+ this.pattern = null; // not used for raw string relocator
+ this.shadedPattern = null; // not used for raw string relocator
}
else
{
- this.shadedPattern = "hidden." + this.pattern;
- this.shadedPathPattern = "hidden/" + this.pathPattern;
+ this.pattern = patt.replace( '/', '.' );
+ this.pathPattern = patt.replace( '.', '/' );
+
+ if ( shadedPattern != null )
+ {
+ this.shadedPattern = shadedPattern.replace( '/', '.' );
+ this.shadedPathPattern = shadedPattern.replace( '.', '/' );
+ }
+ else
+ {
+ this.shadedPattern = "hidden." + this.pattern;
+ this.shadedPathPattern = "hidden/" + this.pathPattern;
+ }
}
this.includes = normalizePatterns( includes );
@@ -131,6 +152,11 @@ public class SimpleRelocator
public boolean canRelocatePath( String path )
{
+ if ( rawString )
+ {
+ return Pattern.compile( pathPattern ).matcher( path ).find();
+ }
+
if ( path.endsWith( ".class" ) )
{
path = path.substring( 0, path.length() - 6 );
@@ -146,12 +172,19 @@ public class SimpleRelocator
public boolean canRelocateClass( String clazz )
{
- return clazz.indexOf( '/' ) < 0 && canRelocatePath( clazz.replace( '.', '/' ) );
+ return !rawString && clazz.indexOf( '/' ) < 0 && canRelocatePath( clazz.replace( '.', '/' ) );
}
public String relocatePath( String path )
{
- return path.replaceFirst( pathPattern, shadedPathPattern );
+ if ( rawString )
+ {
+ return path.replaceAll( pathPattern, shadedPathPattern );
+ }
+ else
+ {
+ return path.replaceFirst( pathPattern, shadedPathPattern );
+ }
}
public String relocateClass( String clazz )
Modified: maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java?rev=1204282&r1=1204281&r2=1204282&view=diff
==============================================================================
--- maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java (original)
+++ maven/plugins/trunk/maven-shade-plugin/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java Sun Nov 20 22:17:34 2011
@@ -71,6 +71,17 @@ public class SimpleRelocatorTest
assertEquals( false, relocator.canRelocateClass( "org.foo.PublicStuff" ) );
assertEquals( false, relocator.canRelocateClass( "org.foo.PublicUtilStuff" ) );
}
+
+ public void testCanRelocateRawString()
+ {
+ SimpleRelocator relocator;
+
+ relocator = new SimpleRelocator( "org/foo", null, null, null, true );
+ assertEquals( true, relocator.canRelocatePath( "(I)org/foo/bar/Class;" ) );
+
+ relocator = new SimpleRelocator( "^META-INF/org.foo.xml$", null, null, null, true );
+ assertEquals( true, relocator.canRelocatePath( "META-INF/org.foo.xml" ) );
+ }
public void testRelocatePath()
{
@@ -94,4 +105,14 @@ public class SimpleRelocatorTest
assertEquals( "private.stuff.bar.Class", relocator.relocateClass( "org.foo.bar.Class" ) );
}
+ public void testRelocateRawString()
+ {
+ SimpleRelocator relocator;
+
+ relocator = new SimpleRelocator( "Lorg/foo", "Lhidden/org/foo", null, null, true );
+ assertEquals( "(I)Lhidden/org/foo/bar/Class;", relocator.relocatePath( "(I)Lorg/foo/bar/Class;" ) );
+
+ relocator = new SimpleRelocator( "^META-INF/org.foo.xml$", "META-INF/hidden.org.foo.xml", null, null, true );
+ assertEquals( "META-INF/hidden.org.foo.xml", relocator.relocatePath( "META-INF/org.foo.xml" ) );
+ }
}