Skip to content

Commit

Permalink
MSHADE-373: allow to specify optional target for resource transformers.
Browse files Browse the repository at this point in the history
  • Loading branch information
raphw committed Jul 2, 2020
1 parent 6ea8543 commit ca0423a
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 10 deletions.
38 changes: 28 additions & 10 deletions src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java
Expand Up @@ -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;
Expand Down Expand Up @@ -458,31 +459,33 @@ public void execute()

List<ResourceTransformer> 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 );
}

if ( shadeTestJar )
{
ShadeRequest shadeTestRequest =
shadeRequest( testArtifacts, testJar, filters, relocators, resourceTransformers );
shadeRequest( "test-jar", testArtifacts, testJar, filters, relocators, resourceTransformers );

shader.shade( shadeTestRequest );
}

if ( createTestSourcesJar )
{
ShadeRequest shadeTestSourcesRequest =
createShadeSourcesRequest( testSourceArtifacts, testSourcesJar, filters, relocators,
resourceTransformers );
createShadeSourcesRequest( "test-sources-jar", testSourceArtifacts, testSourcesJar, filters,
relocators, resourceTransformers );

shader.shade( shadeTestSourcesRequest );
}
Expand Down Expand Up @@ -621,24 +624,24 @@ private void createErrorOutput()
getLog().error( "- You removed the configuration of the maven-jar-plugin that produces the main artifact." );
}

private ShadeRequest shadeRequest( Set<File> artifacts, File outputJar, List<Filter> filters,
private ShadeRequest shadeRequest( String shade, Set<File> artifacts, File outputJar, List<Filter> filters,
List<Relocator> relocators, List<ResourceTransformer> resourceTransformers )
{
ShadeRequest shadeRequest = new ShadeRequest();
shadeRequest.setJars( artifacts );
shadeRequest.setUberJar( outputJar );
shadeRequest.setFilters( filters );
shadeRequest.setRelocators( relocators );
shadeRequest.setResourceTransformers( resourceTransformers );
shadeRequest.setResourceTransformers( toResourceTransformers( shade, resourceTransformers ) );
return shadeRequest;
}

private ShadeRequest createShadeSourcesRequest( Set<File> testArtifacts, File testJar, List<Filter> filters,
List<Relocator> relocators,
private ShadeRequest createShadeSourcesRequest( String shade, Set<File> testArtifacts, File testJar,
List<Filter> filters, List<Relocator> relocators,
List<ResourceTransformer> resourceTransformers )
{
ShadeRequest shadeSourcesRequest =
shadeRequest( testArtifacts, testJar, filters, relocators, resourceTransformers );
shadeRequest( shade, testArtifacts, testJar, filters, relocators, resourceTransformers );
shadeSourcesRequest.setShadeSourcesContent( shadeSourcesContent );
return shadeSourcesRequest;
}
Expand Down Expand Up @@ -1314,4 +1317,19 @@ public boolean updateExcludesInDeps( MavenProject project, List<Dependency> depe
session.getProjectBuildingRequest().setProject( original );
}
}

private List<ResourceTransformer> toResourceTransformers(
String shade, List<ResourceTransformer> resourceTransformers )
{
List<ResourceTransformer> forShade = new ArrayList<ResourceTransformer>();
for ( ResourceTransformer transformer : resourceTransformers )
{
if ( !( transformer instanceof ManifestResourceTransformer )
|| ( ( ManifestResourceTransformer ) transformer ) .isForShade( shade ) )
{
forShade.add( transformer );
}
}
return forShade;
}
}
Expand Up @@ -62,6 +62,8 @@ public class ManifestResourceTransformer

private long time = Long.MIN_VALUE;

private String shade;

public void setMainClass( String mainClass )
{
this.mainClass = mainClass;
Expand Down Expand Up @@ -188,4 +190,19 @@ private String relocate( String originalValue, List<Relocator> 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 );
}
}

0 comments on commit ca0423a

Please sign in to comment.