From 309a22fc473aebff6025d9adea5c42613dfdc884 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Wed, 20 Nov 2013 13:57:38 +1100 Subject: [PATCH 1/3] shade test jar if present --- .../maven/plugins/shade/mojo/ShadeMojo.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java b/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java index 2097798500..b82290e8e4 100644 --- a/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java +++ b/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java @@ -19,6 +19,7 @@ * under the License. */ +import com.google.common.collect.Sets; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.metadata.ArtifactMetadataSource; @@ -377,6 +378,9 @@ public class ShadeMojo @Parameter( defaultValue = "false" ) private boolean useBaseVersion; + @Parameter( defaultValue = "false" ) + private boolean shadeTestJar; + /** * @since 1.6 */ @@ -438,6 +442,7 @@ public void execute() File outputJar = ( outputFile != null ) ? outputFile : shadedArtifactFileWithClassifier(); File sourcesJar = shadedSourceArtifactFileWithClassifier(); + File testJar = shadedTestArtifactFileWithClassifier(); // Now add our extra resources try @@ -470,6 +475,20 @@ public void execute() shader.shade( shadeSourcesRequest ); } + if ( shadeTestJar && testJar.exists() ) + { + + ShadeRequest shadeSourcesRequest = new ShadeRequest(); + shadeSourcesRequest.setJars( Sets.newHashSet( testJar ) ); + shadeSourcesRequest.setUberJar( sourcesJar ); + shadeSourcesRequest.setFilters( filters ); + shadeSourcesRequest.setRelocators( relocators ); + shadeSourcesRequest.setResourceTransformers( resourceTransformers ); + shadeSourcesRequest.setShadeSourcesContent( shadeSourcesContent ); + + shader.shade( shadeSourcesRequest ); + } + if ( outputFile == null ) { boolean renamed = false; @@ -515,6 +534,12 @@ else if ( !renamed ) projectHelper.attachArtifact( project, "jar", "sources", shadedSources ); } + if (shadeTestJar && testJar.exists()) + { + + projectHelper.attachArtifact( project, "jar", "tests", testJar ); + } + if ( createDependencyReducedPom ) { createDependencyReducedPom( artifactIds ); @@ -792,6 +817,15 @@ private File shadedSourceArtifactFileWithClassifier() return new File( outputDirectory, shadedName ); } + private File shadedTestArtifactFileWithClassifier() + { + Artifact artifact = project.getArtifact(); + final String shadedName = + shadedArtifactId + "-" + artifact.getVersion() + "-" + "tests." + + artifact.getArtifactHandler().getExtension(); + return new File( outputDirectory, shadedName ); + } + private File shadedSourcesArtifactFile() { Artifact artifact = project.getArtifact(); From 31c5f7dcad2806c84ab0b40abc82172e77e132cd Mon Sep 17 00:00:00 2001 From: David Pilato Date: Wed, 20 Nov 2013 19:15:46 +0100 Subject: [PATCH 2/3] Shade tests as well (patch to be squashed with the one by @olamy) --- .../maven/plugins/shade/mojo/ShadeMojo.java | 79 +++++++++++-------- 1 file changed, 45 insertions(+), 34 deletions(-) diff --git a/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java b/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java index b82290e8e4..8f49a2f19c 100644 --- a/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java +++ b/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java @@ -19,7 +19,6 @@ * under the License. */ -import com.google.common.collect.Sets; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.metadata.ArtifactMetadataSource; @@ -33,11 +32,7 @@ import org.apache.maven.model.Model; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugins.annotations.Component; -import org.apache.maven.plugins.annotations.LifecyclePhase; -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.annotations.*; import org.apache.maven.plugins.shade.ShadeRequest; import org.apache.maven.plugins.shade.Shader; import org.apache.maven.plugins.shade.filter.Filter; @@ -47,16 +42,10 @@ import org.apache.maven.plugins.shade.relocation.Relocator; import org.apache.maven.plugins.shade.relocation.SimpleRelocator; import org.apache.maven.plugins.shade.resource.ResourceTransformer; -import org.apache.maven.project.DefaultProjectBuildingRequest; -import org.apache.maven.project.MavenProject; -import org.apache.maven.project.MavenProjectHelper; -import org.apache.maven.project.ProjectBuilder; -import org.apache.maven.project.ProjectBuildingException; -import org.apache.maven.project.ProjectBuildingRequest; -import org.apache.maven.project.ProjectBuildingResult; -import org.apache.maven.shared.dependency.graph.DependencyNode; +import org.apache.maven.project.*; import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder; import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException; +import org.apache.maven.shared.dependency.graph.DependencyNode; import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; @@ -66,20 +55,8 @@ import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.WriterFactory; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.Writer; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.io.*; +import java.util.*; /** * Mojo that performs shading delegating to the Shader component. @@ -404,6 +381,7 @@ public void execute() Set artifacts = new LinkedHashSet(); Set artifactIds = new LinkedHashSet(); Set sourceArtifacts = new LinkedHashSet(); + Set testArtifacts = new LinkedHashSet(); ArtifactSelector artifactSelector = new ArtifactSelector( project.getArtifact(), artifactSet, shadedGroupFilter ); @@ -436,6 +414,15 @@ public void execute() sourceArtifacts.add( file ); } } + + if ( shadeTestJar ) + { + File file = shadedTestArtifactFile(); + if ( file.isFile() ) + { + testArtifacts.add( file ); + } + } } processArtifactSelectors( artifacts, artifactIds, sourceArtifacts, artifactSelector ); @@ -475,12 +462,12 @@ public void execute() shader.shade( shadeSourcesRequest ); } - if ( shadeTestJar && testJar.exists() ) + if ( shadeTestJar ) { ShadeRequest shadeSourcesRequest = new ShadeRequest(); - shadeSourcesRequest.setJars( Sets.newHashSet( testJar ) ); - shadeSourcesRequest.setUberJar( sourcesJar ); + shadeSourcesRequest.setJars( testArtifacts ); + shadeSourcesRequest.setUberJar( testJar ); shadeSourcesRequest.setFilters( filters ); shadeSourcesRequest.setRelocators( relocators ); shadeSourcesRequest.setResourceTransformers( resourceTransformers ); @@ -527,6 +514,7 @@ else if ( !renamed ) if ( createSourcesJar ) { + getLog().info( "Replacing original source artifact with shaded source artifact." ); File shadedSources = shadedSourcesArtifactFile(); replaceFile( shadedSources, sourcesJar ); @@ -534,10 +522,14 @@ else if ( !renamed ) projectHelper.attachArtifact( project, "jar", "sources", shadedSources ); } - if (shadeTestJar && testJar.exists()) + if (shadeTestJar) { + getLog().info( "Replacing original test artifact with shaded test artifact." ); + File shadedTests = shadedTestArtifactFile(); + + replaceFile( shadedTests, testJar ); - projectHelper.attachArtifact( project, "jar", "tests", testJar ); + projectHelper.attachArtifact( project, "jar", "tests", shadedTests ); } if ( createDependencyReducedPom ) @@ -821,7 +813,7 @@ private File shadedTestArtifactFileWithClassifier() { Artifact artifact = project.getArtifact(); final String shadedName = - shadedArtifactId + "-" + artifact.getVersion() + "-" + "tests." + shadedArtifactId + "-" + artifact.getVersion() + "-" + shadedClassifierName + "-tests." + artifact.getArtifactHandler().getExtension(); return new File( outputDirectory, shadedName ); } @@ -845,6 +837,25 @@ private File shadedSourcesArtifactFile() return new File( outputDirectory, shadedName ); } + private File shadedTestArtifactFile() + { + Artifact artifact = project.getArtifact(); + + String shadedName; + + if ( project.getBuild().getFinalName() != null ) + { + shadedName = project.getBuild().getFinalName() + "-tests." + artifact.getArtifactHandler().getExtension(); + } + else + { + shadedName = shadedArtifactId + "-" + artifact.getVersion() + "-tests." + + artifact.getArtifactHandler().getExtension(); + } + + return new File( outputDirectory, shadedName ); + } + // We need to find the direct dependencies that have been included in the uber JAR so that we can modify the // POM accordingly. private void createDependencyReducedPom( Set artifactsToRemove ) From 13f0fbd478a517d4adbd52b58bafdd6ec5932f77 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Thu, 21 Nov 2013 10:49:37 +1100 Subject: [PATCH 3/3] fix imports --- .../maven/plugins/shade/mojo/ShadeMojo.java | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java b/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java index 8f49a2f19c..58e1adbe46 100644 --- a/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java +++ b/maven-shade-plugin/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java @@ -32,7 +32,11 @@ import org.apache.maven.model.Model; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugins.annotations.*; +import org.apache.maven.plugins.annotations.Component; +import org.apache.maven.plugins.annotations.LifecyclePhase; +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; @@ -42,7 +46,13 @@ import org.apache.maven.plugins.shade.relocation.Relocator; import org.apache.maven.plugins.shade.relocation.SimpleRelocator; import org.apache.maven.plugins.shade.resource.ResourceTransformer; -import org.apache.maven.project.*; +import org.apache.maven.project.DefaultProjectBuildingRequest; +import org.apache.maven.project.MavenProject; +import org.apache.maven.project.MavenProjectHelper; +import org.apache.maven.project.ProjectBuilder; +import org.apache.maven.project.ProjectBuildingException; +import org.apache.maven.project.ProjectBuildingRequest; +import org.apache.maven.project.ProjectBuildingResult; import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder; import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException; import org.apache.maven.shared.dependency.graph.DependencyNode; @@ -55,8 +65,20 @@ import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.WriterFactory; -import java.io.*; -import java.util.*; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.Writer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; /** * Mojo that performs shading delegating to the Shader component.