diff --git a/build.gradle b/build.gradle index 658938a..8de67e2 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,7 @@ repositories { } group = 'net.minecraftforge' -java.toolchain.languageVersion = JavaLanguageVersion.of(17) +java.toolchain.languageVersion = JavaLanguageVersion.of(8) java.withSourcesJar() jarSigner.fromEnvironmentVariables() diff --git a/src/main/java/net/minecraftforge/gradlejarsigner/GradleJarSignerExtension.java b/src/main/java/net/minecraftforge/gradlejarsigner/GradleJarSignerExtension.java index 4e69441..6bd1b6c 100644 --- a/src/main/java/net/minecraftforge/gradlejarsigner/GradleJarSignerExtension.java +++ b/src/main/java/net/minecraftforge/gradlejarsigner/GradleJarSignerExtension.java @@ -78,7 +78,7 @@ void fill(SignTask task) { } private void set(String key, Consumer prop) { - var data = System.getenv(key); + String data = System.getenv(key); if (data != null) prop.accept(data); else diff --git a/src/main/java/net/minecraftforge/gradlejarsigner/SignTask.java b/src/main/java/net/minecraftforge/gradlejarsigner/SignTask.java index 62c0511..d3c47ff 100644 --- a/src/main/java/net/minecraftforge/gradlejarsigner/SignTask.java +++ b/src/main/java/net/minecraftforge/gradlejarsigner/SignTask.java @@ -5,6 +5,7 @@ package net.minecraftforge.gradlejarsigner; import java.io.BufferedOutputStream; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -23,10 +24,12 @@ import java.util.zip.ZipFile; import org.gradle.api.Task; +import org.gradle.api.tasks.TaskInputs; import org.gradle.api.file.FileTreeElement; import org.gradle.api.file.FileVisitDetails; import org.gradle.api.file.FileVisitor; import org.gradle.api.file.RegularFileProperty; +import org.gradle.api.model.ObjectFactory; import org.gradle.api.provider.Property; import org.gradle.api.specs.Spec; import org.gradle.api.tasks.Internal; @@ -56,7 +59,7 @@ public class SignTask implements PatternFilterable { if (this.config != null) this.config.setDelegate(this); - var objs = this.parent.getProject().getObjects(); + ObjectFactory objs = this.parent.getProject().getObjects(); this.alias = objs.property(String.class); this.storePass = objs.property(String.class); @@ -77,7 +80,7 @@ public Object doCall() { } private Object addProperties() { - var in = this.parent.getInputs(); + TaskInputs in = this.parent.getInputs(); if (!patternSet.isEmpty()) { in.property("signJar.patternSet.excludes", patternSet.getExcludes()); in.property("signJar.patternSet.includes", patternSet.getIncludes()); @@ -110,12 +113,12 @@ private boolean hasEnoughInfo() { private void sign(T task) throws IOException { final Map> ignoredStuff = new HashMap<>(); - var tmp = this.parent.getTemporaryDir(); - var output = this.parent.getArchiveFile().get().getAsFile(); - var original = new File(tmp, output.getName() + ".original"); + File tmp = this.parent.getTemporaryDir(); + File output = this.parent.getArchiveFile().get().getAsFile(); + File original = new File(tmp, output.getName() + ".original"); Files.move(output.toPath(), original.toPath(), StandardCopyOption.REPLACE_EXISTING); - var input = original; + File input = original; if (!patternSet.isEmpty()) { input = new File(tmp, input.getName() + ".unsigned"); processInputJar(original, input, ignoredStuff); @@ -129,14 +132,14 @@ private void sign(T task) throws IOException { throw new IllegalStateException("Both KeyStoreFile and KeyStoreData can not be set at the same time"); keyStore = this.keyStoreFile.get().getAsFile(); } else if (this.keyStoreData.isPresent()) { - var data = Base64.getDecoder().decode(this.keyStoreData.get().getBytes(StandardCharsets.UTF_8)); + byte[] data = Base64.getDecoder().decode(this.keyStoreData.get().getBytes(StandardCharsets.UTF_8)); keyStore = new File(tmp, "keystore"); Files.write(keyStore.toPath(), data); } else { throw new IllegalArgumentException("SignJar needs either a Base64 encoded KeyStore file, or a path to a KeyStore file"); } - var map = new HashMap(); + Map map = new HashMap<>(); map.put("alias", this.alias.get()); map.put("storePass", this.storePass.get()); map.put("jar", input.getAbsolutePath()); @@ -157,10 +160,10 @@ private void sign(T task) throws IOException { } private void processInputJar(File input, File output, final Map> unsigned) throws IOException { - var spec = patternSet.getAsSpec(); + final Spec spec = patternSet.getAsSpec(); output.getParentFile().mkdirs(); - try (var outs = new JarOutputStream(new BufferedOutputStream(new FileOutputStream(output)))){ + try (JarOutputStream outs = new JarOutputStream(new BufferedOutputStream(new FileOutputStream(output)))){ this.parent.getProject().zipTree(input).visit(new FileVisitor() { @Override public void visitDir(FileVisitDetails details) { @@ -185,7 +188,13 @@ public void visitFile(FileVisitDetails details) { outs.closeEntry(); } else { InputStream stream = details.open(); - var data = stream.readAllBytes(); + ByteArrayOutputStream tmp = new ByteArrayOutputStream(stream.available()); + byte[] buf = new byte[0x100]; + int len; + while ((len = stream.read(buf)) != -1) + tmp.write(buf, 0, len); + + byte[] data = tmp.toByteArray(); unsigned.put(details.getPath(), new MapEntry(data, details.getLastModified())); stream.close(); } @@ -202,6 +211,7 @@ private void writeOutputJar(File signedJar, File outputJar, Map