You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2020/05/03 11:52:26 UTC
[maven-shade-plugin] branch MSHADE-363 updated: [MSHADE-363] add
ReproducibleResourceTransformer to keep compatibility
This is an automated email from the ASF dual-hosted git repository.
hboutemy pushed a commit to branch MSHADE-363
in repository https://gitbox.apache.org/repos/asf/maven-shade-plugin.git
The following commit(s) were added to refs/heads/MSHADE-363 by this push:
new 3d0af77 [MSHADE-363] add ReproducibleResourceTransformer to keep compatibility
3d0af77 is described below
commit 3d0af7704b227d6c9007550c246b9063f73b6a0c
Author: Hervé Boutemy <hb...@apache.org>
AuthorDate: Sun May 3 13:52:21 2020 +0200
[MSHADE-363] add ReproducibleResourceTransformer to keep compatibility
---
.../apache/maven/plugins/shade/DefaultShader.java | 28 ++++++++++++--------
....java => AbstractCompatibilityTransformer.java} | 30 ++++++++--------------
.../resource/ApacheLicenseResourceTransformer.java | 2 +-
.../resource/ApacheNoticeResourceTransformer.java | 2 +-
.../shade/resource/AppendingTransformer.java | 2 +-
.../resource/ComponentsXmlResourceTransformer.java | 2 +-
.../resource/DontIncludeResourceTransformer.java | 2 +-
.../shade/resource/GroovyResourceTransformer.java | 2 +-
.../shade/resource/IncludeResourceTransformer.java | 2 +-
.../resource/ManifestResourceTransformer.java | 2 +-
.../resource/PluginXmlResourceTransformer.java | 2 +-
...r.java => ReproducibleResourceTransformer.java} | 24 +++++------------
.../ResourceBundleAppendingTransformer.java | 2 +-
.../shade/resource/ResourceTransformer.java | 4 +--
.../resource/ServicesResourceTransformer.java | 2 +-
.../shade/resource/XmlAppendingTransformer.java | 2 +-
.../resource/properties/PropertiesTransformer.java | 11 ++++++--
.../shade/resource/rule/TransformerTesterRule.java | 23 +++++++++--------
18 files changed, 70 insertions(+), 74 deletions(-)
diff --git a/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java b/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
index f5897c3..4fac59d 100644
--- a/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
+++ b/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java
@@ -49,6 +49,7 @@ 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.ManifestResourceTransformer;
+import org.apache.maven.plugins.shade.resource.ReproducibleResourceTransformer;
import org.apache.maven.plugins.shade.resource.ResourceTransformer;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.logging.AbstractLogEnabled;
@@ -76,7 +77,7 @@ public class DefaultShader
{
Set<String> resources = new HashSet<>();
- ResourceTransformer manifestTransformer = null;
+ ManifestResourceTransformer manifestTransformer = null;
List<ResourceTransformer> transformers =
new ArrayList<>( shadeRequest.getResourceTransformers() );
for ( Iterator<ResourceTransformer> it = transformers.iterator(); it.hasNext(); )
@@ -84,7 +85,7 @@ public class DefaultShader
ResourceTransformer transformer = it.next();
if ( transformer instanceof ManifestResourceTransformer )
{
- manifestTransformer = transformer;
+ manifestTransformer = (ManifestResourceTransformer) transformer;
it.remove();
}
}
@@ -261,11 +262,11 @@ public class DefaultShader
}
private void goThroughAllJarEntriesForManifestTransformer( ShadeRequest shadeRequest, Set<String> resources,
- ResourceTransformer resourceTransformer,
+ ManifestResourceTransformer manifestTransformer,
JarOutputStream jos )
throws IOException
{
- if ( resourceTransformer != null )
+ if ( manifestTransformer != null )
{
for ( File jar : shadeRequest.getJars() )
{
@@ -275,22 +276,22 @@ public class DefaultShader
{
JarEntry entry = en.nextElement();
String resource = entry.getName();
- if ( resourceTransformer.canTransformResource( resource ) )
+ if ( manifestTransformer.canTransformResource( resource ) )
{
resources.add( resource );
try ( InputStream inputStream = jarFile.getInputStream( entry ) )
{
- resourceTransformer.processResource( resource, inputStream,
- shadeRequest.getRelocators(), entry.getTime() );
+ manifestTransformer.processResource( resource, inputStream,
+ shadeRequest.getRelocators(), entry.getTime() );
}
break;
}
}
}
}
- if ( resourceTransformer.hasTransformedResource() )
+ if ( manifestTransformer.hasTransformedResource() )
{
- resourceTransformer.modifyOutputStream( jos );
+ manifestTransformer.modifyOutputStream( jos );
}
}
}
@@ -526,7 +527,14 @@ public class DefaultShader
{
getLogger().debug( "Transforming " + name + " using " + transformer.getClass().getName() );
- transformer.processResource( name, is, relocators, time );
+ if ( transformer instanceof ReproducibleResourceTransformer )
+ {
+ ( (ReproducibleResourceTransformer) transformer ).processResource( name, is, relocators, time );
+ }
+ else
+ {
+ transformer.processResource( name, is, relocators );
+ }
resourceTransformed = true;
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/AbstractCompatibilityTransformer.java
similarity index 57%
copy from src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
copy to src/main/java/org/apache/maven/plugins/shade/resource/AbstractCompatibilityTransformer.java
index bb4400a..392ddb9 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/AbstractCompatibilityTransformer.java
@@ -24,26 +24,16 @@ import org.apache.maven.plugins.shade.relocation.Relocator;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
-import java.util.jar.JarOutputStream;
-/** @author Jason van Zyl */
-public interface ResourceTransformer
+/**
+ * An abstract class to implement once the old non-reproducible ResourceTransformer API.
+ */
+abstract class AbstractCompatibilityTransformer
+ implements ReproducibleResourceTransformer
{
- boolean canTransformResource( String resource );
-
- /**
- * Transform an individual resource
- * @param resource The resource name
- * @param is An input stream for the resource, the implementation should *not* close this stream
- * @param relocators A list of relocators
- * @param time the time of the resource to process
- * @throws IOException When the IO blows up
- */
- void processResource( String resource, InputStream is, List<Relocator> relocators, long time )
- throws IOException;
-
- boolean hasTransformedResource();
-
- void modifyOutputStream( JarOutputStream os )
- throws IOException;
+ public final void processResource( String resource, InputStream is, List<Relocator> relocators )
+ throws IOException
+ {
+ processResource( resource, is, relocators, 0 );
+ }
}
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ApacheLicenseResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ApacheLicenseResourceTransformer.java
index 6fd7931..524ffdd 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ApacheLicenseResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ApacheLicenseResourceTransformer.java
@@ -30,7 +30,7 @@ import org.apache.maven.plugins.shade.relocation.Relocator;
* Prevents duplicate copies of the license
*/
public class ApacheLicenseResourceTransformer
- implements ResourceTransformer
+ extends AbstractCompatibilityTransformer
{
private static final String LICENSE_PATH = "META-INF/LICENSE";
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java
index 173d1d9..e75062b 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ApacheNoticeResourceTransformer.java
@@ -43,7 +43,7 @@ import java.util.jar.JarOutputStream;
* Merges <code>META-INF/NOTICE.TXT</code> files.
*/
public class ApacheNoticeResourceTransformer
- implements ResourceTransformer
+ extends AbstractCompatibilityTransformer
{
Set<String> entries = new LinkedHashSet<>();
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java
index 61556eb..c3cc937 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/AppendingTransformer.java
@@ -33,7 +33,7 @@ import java.util.jar.JarOutputStream;
* A resource processor that appends content for a resource, separated by a newline.
*/
public class AppendingTransformer
- implements ResourceTransformer
+ extends AbstractCompatibilityTransformer
{
String resource;
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformer.java
index b82b0d7..9f83618 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ComponentsXmlResourceTransformer.java
@@ -42,7 +42,7 @@ import java.util.jar.JarOutputStream;
* A resource processor that aggregates plexus <code>components.xml</code> files.
*/
public class ComponentsXmlResourceTransformer
- implements ResourceTransformer
+ extends AbstractCompatibilityTransformer
{
private Map<String, Xpp3Dom> components = new LinkedHashMap<>();
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/DontIncludeResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/DontIncludeResourceTransformer.java
index bfd1f0e..e1b7bc2 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/DontIncludeResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/DontIncludeResourceTransformer.java
@@ -32,7 +32,7 @@ import java.util.jar.JarOutputStream;
* resource into the shaded JAR.
*/
public class DontIncludeResourceTransformer
- implements ResourceTransformer
+ extends AbstractCompatibilityTransformer
{
String resource;
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java
index f54c0cb..1a8d61d 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/GroovyResourceTransformer.java
@@ -36,7 +36,7 @@ import java.util.jar.JarOutputStream;
* Aggregate Apache Groovy extension modules descriptors
*/
public class GroovyResourceTransformer
- implements ResourceTransformer
+ extends AbstractCompatibilityTransformer
{
static final String EXT_MODULE_NAME_LEGACY = "META-INF/services/org.codehaus.groovy.runtime.ExtensionModule";
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/IncludeResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/IncludeResourceTransformer.java
index ab360d1..dfe3326 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/IncludeResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/IncludeResourceTransformer.java
@@ -35,7 +35,7 @@ import java.util.jar.JarOutputStream;
* content into the shaded JAR.
*/
public class IncludeResourceTransformer
- implements ResourceTransformer
+ extends AbstractCompatibilityTransformer
{
File file;
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 6bf711b..b66c73a 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
@@ -41,7 +41,7 @@ import org.apache.maven.plugins.shade.relocation.Relocator;
* @since 1.2
*/
public class ManifestResourceTransformer
- implements ResourceTransformer
+ extends AbstractCompatibilityTransformer
{
private final List<String> defaultAttributes = Arrays.asList( "Export-Package",
"Import-Package",
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/PluginXmlResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/PluginXmlResourceTransformer.java
index 9392b53..0cbb3fa 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/PluginXmlResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/PluginXmlResourceTransformer.java
@@ -44,7 +44,7 @@ import org.codehaus.plexus.util.xml.Xpp3DomWriter;
* @since 3.0
*/
public class PluginXmlResourceTransformer
- implements ResourceTransformer
+ extends AbstractCompatibilityTransformer
{
private List<Xpp3Dom> mojos = new ArrayList<>();
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ReproducibleResourceTransformer.java
similarity index 64%
copy from src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
copy to src/main/java/org/apache/maven/plugins/shade/resource/ReproducibleResourceTransformer.java
index bb4400a..f6a87f2 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ReproducibleResourceTransformer.java
@@ -24,26 +24,14 @@ import org.apache.maven.plugins.shade.relocation.Relocator;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
-import java.util.jar.JarOutputStream;
-/** @author Jason van Zyl */
-public interface ResourceTransformer
+/**
+ * Copy of original interface necessary to MSHADE-363_old-plugin IT.
+ * @since 3.2.4
+ */
+public interface ReproducibleResourceTransformer
+ extends ResourceTransformer
{
- boolean canTransformResource( String resource );
-
- /**
- * Transform an individual resource
- * @param resource The resource name
- * @param is An input stream for the resource, the implementation should *not* close this stream
- * @param relocators A list of relocators
- * @param time the time of the resource to process
- * @throws IOException When the IO blows up
- */
void processResource( String resource, InputStream is, List<Relocator> relocators, long time )
throws IOException;
-
- boolean hasTransformedResource();
-
- void modifyOutputStream( JarOutputStream os )
- throws IOException;
}
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceBundleAppendingTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ResourceBundleAppendingTransformer.java
index 77223ee..5ea56cf 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceBundleAppendingTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ResourceBundleAppendingTransformer.java
@@ -39,7 +39,7 @@ import org.codehaus.plexus.util.IOUtil;
* @since 3.0.0
*/
public class ResourceBundleAppendingTransformer
- implements ResourceTransformer
+ extends AbstractCompatibilityTransformer
{
private Map<String, ByteArrayOutputStream> dataMap = new HashMap<>();
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
index bb4400a..7b76666 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ResourceTransformer.java
@@ -36,10 +36,10 @@ public interface ResourceTransformer
* @param resource The resource name
* @param is An input stream for the resource, the implementation should *not* close this stream
* @param relocators A list of relocators
- * @param time the time of the resource to process
* @throws IOException When the IO blows up
+ * @deprecated prefer ReproducibleResourceTransformer
*/
- void processResource( String resource, InputStream is, List<Relocator> relocators, long time )
+ void processResource( String resource, InputStream is, List<Relocator> relocators )
throws IOException;
boolean hasTransformedResource();
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java
index 929c5fa..b2f5dd6 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/ServicesResourceTransformer.java
@@ -46,7 +46,7 @@ import org.apache.maven.plugins.shade.relocation.Relocator;
* shading process.
*/
public class ServicesResourceTransformer
- implements ResourceTransformer
+ extends AbstractCompatibilityTransformer
{
private static final String SERVICES_PATH = "META-INF/services";
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/XmlAppendingTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/XmlAppendingTransformer.java
index 608c1a2..f5f6ac8 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/XmlAppendingTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/XmlAppendingTransformer.java
@@ -44,7 +44,7 @@ import org.xml.sax.SAXException;
* Appends multiple occurrences of some XML file.
*/
public class XmlAppendingTransformer
- implements ResourceTransformer
+ extends AbstractCompatibilityTransformer
{
public static final String XSI_NS = "http://www.w3.org/2001/XMLSchema-instance";
diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/properties/PropertiesTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/properties/PropertiesTransformer.java
index 8040923..9b92797 100644
--- a/src/main/java/org/apache/maven/plugins/shade/resource/properties/PropertiesTransformer.java
+++ b/src/main/java/org/apache/maven/plugins/shade/resource/properties/PropertiesTransformer.java
@@ -32,7 +32,7 @@ import java.util.jar.JarEntry;
import java.util.jar.JarOutputStream;
import org.apache.maven.plugins.shade.relocation.Relocator;
-import org.apache.maven.plugins.shade.resource.ResourceTransformer;
+import org.apache.maven.plugins.shade.resource.ReproducibleResourceTransformer;
import org.apache.maven.plugins.shade.resource.properties.io.NoCloseOutputStream;
import org.apache.maven.plugins.shade.resource.properties.io.SkipPropertiesDateLineWriter;
@@ -42,7 +42,7 @@ import org.apache.maven.plugins.shade.resource.properties.io.SkipPropertiesDateL
* @since 3.2.2
*/
public class PropertiesTransformer
- implements ResourceTransformer
+ implements ReproducibleResourceTransformer
{
private String resource;
private String alreadyMergedKey;
@@ -74,6 +74,13 @@ public class PropertiesTransformer
}
@Override
+ public final void processResource( String resource, InputStream is, List<Relocator> relocators )
+ throws IOException
+ {
+ processResource( resource, is, relocators, 0 );
+ }
+
+ @Override
public void processResource( final String resource, final InputStream is, final List<Relocator> relocators,
long time )
throws IOException
diff --git a/src/test/java/org/apache/maven/plugins/shade/resource/rule/TransformerTesterRule.java b/src/test/java/org/apache/maven/plugins/shade/resource/rule/TransformerTesterRule.java
index 1eaf2b1..c159841 100644
--- a/src/test/java/org/apache/maven/plugins/shade/resource/rule/TransformerTesterRule.java
+++ b/src/test/java/org/apache/maven/plugins/shade/resource/rule/TransformerTesterRule.java
@@ -39,7 +39,7 @@ import java.util.jar.JarInputStream;
import java.util.jar.JarOutputStream;
import org.apache.maven.plugins.shade.relocation.Relocator;
-import org.apache.maven.plugins.shade.resource.ResourceTransformer;
+import org.apache.maven.plugins.shade.resource.ReproducibleResourceTransformer;
import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
import org.codehaus.plexus.component.configurator.converters.ConfigurationConverter;
import org.codehaus.plexus.component.configurator.converters.lookup.ConverterLookup;
@@ -51,7 +51,8 @@ import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
-public class TransformerTesterRule implements TestRule
+public class TransformerTesterRule
+ implements TestRule
{
@Override
public Statement apply( final Statement base, final Description description )
@@ -71,9 +72,9 @@ public class TransformerTesterRule implements TestRule
final Map<String, String> jar;
try
{
- final ResourceTransformer transformer = createTransformer(spec);
- visit(spec, transformer);
- jar = captureOutput(transformer);
+ final ReproducibleResourceTransformer transformer = createTransformer( spec );
+ visit( spec, transformer );
+ jar = captureOutput( transformer );
}
catch ( final Exception ex )
{
@@ -110,7 +111,8 @@ public class TransformerTesterRule implements TestRule
}
}
- private Map<String, String> captureOutput(final ResourceTransformer transformer ) throws IOException
+ private Map<String, String> captureOutput( final ReproducibleResourceTransformer transformer )
+ throws IOException
{
final ByteArrayOutputStream out = new ByteArrayOutputStream();
try ( final JarOutputStream jar = new JarOutputStream( out ) )
@@ -130,11 +132,12 @@ public class TransformerTesterRule implements TestRule
return created;
}
- private void visit( final TransformerTest spec, final ResourceTransformer transformer ) throws IOException
+ private void visit( final TransformerTest spec, final ReproducibleResourceTransformer transformer )
+ throws IOException
{
for ( final Resource resource : spec.visited() )
{
- if ( transformer.canTransformResource( resource.path() ))
+ if ( transformer.canTransformResource( resource.path() ) )
{
transformer.processResource(
resource.path(),
@@ -156,7 +159,7 @@ public class TransformerTesterRule implements TestRule
return builder.toString();
}
- private ResourceTransformer createTransformer(final TransformerTest spec)
+ private ReproducibleResourceTransformer createTransformer(final TransformerTest spec)
{
final ConverterLookup lookup = new DefaultConverterLookup();
try
@@ -167,7 +170,7 @@ public class TransformerTesterRule implements TestRule
{
configuration.addChild( property.name(), property.value() );
}
- return ResourceTransformer.class.cast(
+ return ReproducibleResourceTransformer.class.cast(
converter.fromConfiguration( lookup, configuration, spec.transformer(), spec.transformer(),
Thread.currentThread().getContextClassLoader(),
new DefaultExpressionEvaluator() ) );