From ca0423a6a529bc51a2e62043bfa36395afa58b4a Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Thu, 2 Jul 2020 20:26:26 +0200 Subject: [PATCH] MSHADE-373: allow to specify optional target for resource transformers. --- .../maven/plugins/shade/mojo/ShadeMojo.java | 38 ++++++++++++++----- .../resource/ManifestResourceTransformer.java | 17 +++++++++ 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java b/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java index cf7cddff..62560d5e 100644 --- a/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java +++ b/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java @@ -40,6 +40,7 @@ import org.apache.maven.plugins.shade.pom.PomWriter; import org.apache.maven.plugins.shade.relocation.Relocator; import org.apache.maven.plugins.shade.relocation.SimpleRelocator; +import org.apache.maven.plugins.shade.resource.ManifestResourceTransformer; import org.apache.maven.plugins.shade.resource.ResourceTransformer; import org.apache.maven.project.DefaultProjectBuildingRequest; import org.apache.maven.project.MavenProject; @@ -458,14 +459,16 @@ public void execute() List resourceTransformers = getResourceTransformers(); - ShadeRequest shadeRequest = shadeRequest( artifacts, outputJar, filters, relocators, resourceTransformers ); + ShadeRequest shadeRequest = shadeRequest( "jar", artifacts, outputJar, filters, relocators, + resourceTransformers ); shader.shade( shadeRequest ); if ( createSourcesJar ) { ShadeRequest shadeSourcesRequest = - createShadeSourcesRequest( sourceArtifacts, sourcesJar, filters, relocators, resourceTransformers ); + createShadeSourcesRequest( "sources-jar", sourceArtifacts, sourcesJar, filters, relocators, + resourceTransformers ); shader.shade( shadeSourcesRequest ); } @@ -473,7 +476,7 @@ public void execute() if ( shadeTestJar ) { ShadeRequest shadeTestRequest = - shadeRequest( testArtifacts, testJar, filters, relocators, resourceTransformers ); + shadeRequest( "test-jar", testArtifacts, testJar, filters, relocators, resourceTransformers ); shader.shade( shadeTestRequest ); } @@ -481,8 +484,8 @@ public void execute() if ( createTestSourcesJar ) { ShadeRequest shadeTestSourcesRequest = - createShadeSourcesRequest( testSourceArtifacts, testSourcesJar, filters, relocators, - resourceTransformers ); + createShadeSourcesRequest( "test-sources-jar", testSourceArtifacts, testSourcesJar, filters, + relocators, resourceTransformers ); shader.shade( shadeTestSourcesRequest ); } @@ -621,7 +624,7 @@ private void createErrorOutput() getLog().error( "- You removed the configuration of the maven-jar-plugin that produces the main artifact." ); } - private ShadeRequest shadeRequest( Set artifacts, File outputJar, List filters, + private ShadeRequest shadeRequest( String shade, Set artifacts, File outputJar, List filters, List relocators, List resourceTransformers ) { ShadeRequest shadeRequest = new ShadeRequest(); @@ -629,16 +632,16 @@ private ShadeRequest shadeRequest( Set artifacts, File outputJar, List testArtifacts, File testJar, List filters, - List relocators, + private ShadeRequest createShadeSourcesRequest( String shade, Set testArtifacts, File testJar, + List filters, List relocators, List resourceTransformers ) { ShadeRequest shadeSourcesRequest = - shadeRequest( testArtifacts, testJar, filters, relocators, resourceTransformers ); + shadeRequest( shade, testArtifacts, testJar, filters, relocators, resourceTransformers ); shadeSourcesRequest.setShadeSourcesContent( shadeSourcesContent ); return shadeSourcesRequest; } @@ -1314,4 +1317,19 @@ public boolean updateExcludesInDeps( MavenProject project, List depe session.getProjectBuildingRequest().setProject( original ); } } + + private List toResourceTransformers( + String shade, List resourceTransformers ) + { + List forShade = new ArrayList(); + for ( ResourceTransformer transformer : resourceTransformers ) + { + if ( !( transformer instanceof ManifestResourceTransformer ) + || ( ( ManifestResourceTransformer ) transformer ) .isForShade( shade ) ) + { + forShade.add( transformer ); + } + } + return forShade; + } } diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java index b66c73a3..91c0c0cd 100644 --- a/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java +++ b/src/main/java/org/apache/maven/plugins/shade/resource/ManifestResourceTransformer.java @@ -62,6 +62,8 @@ public class ManifestResourceTransformer private long time = Long.MIN_VALUE; + private String shade; + public void setMainClass( String mainClass ) { this.mainClass = mainClass; @@ -188,4 +190,19 @@ private String relocate( String originalValue, List relocators ) } return newValue; } + + /** + * The shades to apply this transformer to or no shades if no filter is applied. + * + * @param shade {@code null}, {@code jar}, {@code test-jar}, {@code sources-jar} or {@code test-sources-jar}. + */ + public void setForShade( String shade ) + { + this.shade = shade; + } + + public boolean isForShade( String shade ) + { + return shade == null || shade.isEmpty() || this.shade.equalsIgnoreCase( shade ); + } }