You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2026/02/26 16:23:18 UTC
(maven-shade-plugin) branch drop-deps created (now e0b1215)
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a change to branch drop-deps
in repository https://gitbox.apache.org/repos/asf/maven-shade-plugin.git
at e0b1215 Drop excessive dependencies
This branch includes the following new commits:
new e0b1215 Drop excessive dependencies
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(maven-shade-plugin) 01/01: Drop excessive dependencies
Posted by cs...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch drop-deps
in repository https://gitbox.apache.org/repos/asf/maven-shade-plugin.git
commit e0b12152a62aed72e98327238042df398c4367b2
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Thu Feb 26 17:22:50 2026 +0100
Drop excessive dependencies
This plugin drags TOO MUCH just for too few things.
Drop them.
---
pom.xml | 16 +++----
.../apache/maven/plugins/shade/DefaultShader.java | 51 ++++++++++++++--------
.../resource/ServicesResourceTransformer.java | 4 +-
.../resource/SisuIndexResourceTransformer.java | 4 +-
4 files changed, 44 insertions(+), 31 deletions(-)
diff --git a/pom.xml b/pom.xml
index a04591e..322f0c0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -157,16 +157,6 @@
<artifactId>jdom2</artifactId>
<version>2.0.6.1</version>
</dependency>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-compress</artifactId>
- <version>1.28.0</version>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.21.0</version>
- </dependency>
<dependency>
<groupId>org.vafer</groupId>
<artifactId>jdependency</artifactId>
@@ -228,6 +218,12 @@
<version>3.5.1</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.21.0</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
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 5400b42..d4f9967 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.InputStreamReader;
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.CRC32;
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 class DefaultShader implements Shader {
// 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 <a href="https://commons.apache.org/proper/commons-compress/apidocs/org/apache/commons/compress/archivers/zip/X5455_ExtendedTimestamp.html">X5455_ExtendedTimestamp</a>
+ */
+ 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 9b354dd..ec8f521 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.Set;
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 class ServicesResourceTransformer extends AbstractCompatibilityTransforme
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 380acbe..ac4cbc2 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.Scanner;
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 class SisuIndexResourceTransformer extends AbstractCompatibilityTransform
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();
}