From e0b12152a62aed72e98327238042df398c4367b2 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 26 Feb 2026 17:22:50 +0100 Subject: [PATCH 1/2] Drop excessive dependencies This plugin drags TOO MUCH just for too few things. Drop them. --- pom.xml | 16 +++--- .../maven/plugins/shade/DefaultShader.java | 51 ++++++++++++------- .../resource/ServicesResourceTransformer.java | 4 +- .../SisuIndexResourceTransformer.java | 4 +- 4 files changed, 44 insertions(+), 31 deletions(-) diff --git a/pom.xml b/pom.xml index a04591e1..322f0c09 100644 --- a/pom.xml +++ b/pom.xml @@ -157,16 +157,6 @@ jdom2 2.0.6.1 - - org.apache.commons - commons-compress - 1.28.0 - - - commons-io - commons-io - 2.21.0 - org.vafer jdependency @@ -228,6 +218,12 @@ 3.5.1 test + + commons-io + commons-io + 2.21.0 + test + 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 5400b42e..d4f99674 100644 --- a/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java +++ b/src/main/java/org/apache/maven/plugins/shade/DefaultShader.java @@ -30,6 +30,8 @@ import java.io.OutputStreamWriter; import java.io.PushbackInputStream; import java.io.Writer; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.ArrayList; @@ -56,9 +58,6 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipException; -import org.apache.commons.compress.archivers.zip.ExtraFieldUtils; -import org.apache.commons.compress.archivers.zip.X5455_ExtendedTimestamp; -import org.apache.commons.compress.archivers.zip.ZipExtraField; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.shade.filter.Filter; import org.apache.maven.plugins.shade.relocation.Relocator; @@ -95,23 +94,41 @@ public DefaultShader(final Logger logger) { // workaround for MSHADE-420 private long getTime(ZipEntry entry) { - if (entry.getExtra() != null) { - try { - ZipExtraField[] fields = - ExtraFieldUtils.parse(entry.getExtra(), true, ExtraFieldUtils.UnparseableExtraField.SKIP); - for (ZipExtraField field : fields) { - if (X5455_ExtendedTimestamp.HEADER_ID.equals(field.getHeaderId())) { - // extended timestamp extra field: need to translate UTC to local time for Reproducible Builds - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(entry.getTime()); - return entry.getTime() - (cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)); - } + if (entry.getLastModifiedTime() == null) { + return -1; + } + long mtime = entry.getLastModifiedTime().toMillis(); + if (hasX5455ExtendedTimestamp(entry)) { + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(mtime); + mtime = mtime - (cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET)); + } + return mtime; + } + + /** + * Returns {@code true} if passed in {@link ZipEntry} has extra data that contains the extended timestamp (0x5455). + * + * @see X5455_ExtendedTimestamp + */ + private static boolean hasX5455ExtendedTimestamp(ZipEntry zipEntry) { + if (zipEntry.getExtra() != null) { + ByteBuffer extraData = ByteBuffer.wrap(zipEntry.getExtra()); + extraData.order(ByteOrder.LITTLE_ENDIAN); + while (extraData.hasRemaining()) { + int id = extraData.getShort() & 0xffff; + int length = extraData.getShort() & 0xffff; + + if (id == 0x5455) { + // Extended TS is present + return true; + } else { + // skip to next + extraData.position(extraData.position() + length); } - } catch (ZipException ze) { - // ignore } } - return entry.getTime(); + return false; } public void shade(ShadeRequest shadeRequest) throws IOException, MojoExecutionException { 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 9b354dd2..ec8f521a 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 @@ -30,8 +30,8 @@ import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; -import org.apache.commons.io.IOUtils; import org.apache.maven.plugins.shade.relocation.Relocator; +import org.codehaus.plexus.util.IOUtil; /** * Resources transformer that relocates classes in META-INF/services and appends entries in META-INF/services resources @@ -97,7 +97,7 @@ public void modifyOutputStream(JarOutputStream jos) throws IOException { jarEntry.setTime(time); jos.putNextEntry(jarEntry); - IOUtils.writeLines(data, "\n", jos, StandardCharsets.UTF_8); + IOUtil.copy((String.join("\n", data) + "\n").getBytes(StandardCharsets.UTF_8), jos); jos.flush(); data.clear(); } diff --git a/src/main/java/org/apache/maven/plugins/shade/resource/SisuIndexResourceTransformer.java b/src/main/java/org/apache/maven/plugins/shade/resource/SisuIndexResourceTransformer.java index 380acbe6..ac4cbc2a 100644 --- a/src/main/java/org/apache/maven/plugins/shade/resource/SisuIndexResourceTransformer.java +++ b/src/main/java/org/apache/maven/plugins/shade/resource/SisuIndexResourceTransformer.java @@ -27,8 +27,8 @@ import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; -import org.apache.commons.io.IOUtils; import org.apache.maven.plugins.shade.relocation.Relocator; +import org.codehaus.plexus.util.IOUtil; /** * Resource transformer that relocates classes in {@code META-INF/sisu/javax.inject.Named} and appends resources @@ -78,7 +78,7 @@ public void modifyOutputStream(final JarOutputStream jos) throws IOException { JarEntry jarEntry = new JarEntry(SISU_INDEX_PATH); jarEntry.setTime(time); jos.putNextEntry(jarEntry); - IOUtils.writeLines(indexEntries, "\n", jos, StandardCharsets.UTF_8); + IOUtil.copy((String.join("\n", indexEntries) + "\n").getBytes(StandardCharsets.UTF_8), jos); jos.flush(); indexEntries.clear(); } From 16cfd4db05c5a4e1f5b8f34f540784c9381be776 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 26 Feb 2026 18:13:34 +0100 Subject: [PATCH 2/2] Sort out deps --- pom.xml | 62 +++++++++++++++++++++++++++------------------------------ 1 file changed, 29 insertions(+), 33 deletions(-) diff --git a/pom.xml b/pom.xml index 322f0c09..7ad0742c 100644 --- a/pom.xml +++ b/pom.xml @@ -88,7 +88,34 @@ - + + + org.ow2.asm + asm + ${asmVersion} + + + org.ow2.asm + asm-commons + ${asmVersion} + + + org.jdom + jdom2 + 2.0.6.1 + + + org.vafer + jdependency + 2.15 + + + org.codehaus.plexus + plexus-utils + 3.6.0 + + + org.apache.maven maven-plugin-api @@ -119,48 +146,17 @@ 3.15.2 provided - - - - org.codehaus.plexus - plexus-utils - 3.6.0 - - - javax.inject javax.inject 1 provided - - org.slf4j slf4j-api ${slf4j.version} - - - org.ow2.asm - asm - ${asmVersion} - - - org.ow2.asm - asm-commons - ${asmVersion} - - - - org.jdom - jdom2 - 2.0.6.1 - - - org.vafer - jdependency - 2.15 + provided