Skip to content

Commit

Permalink
Move doLast into the task action of RecompileSources.
Browse files Browse the repository at this point in the history
  • Loading branch information
shartte committed Dec 14, 2023
1 parent 3ee39d1 commit c967125
Showing 1 changed file with 23 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
import net.neoforged.gradle.dsl.common.runtime.tasks.RuntimeMultiArguments;
import net.neoforged.gradle.util.ZipBuildingFileTreeVisitor;
import net.neoforged.gradle.dsl.common.runtime.tasks.Runtime;
import org.gradle.api.Action;
import org.gradle.api.Task;
import org.gradle.api.file.ConfigurableFileCollection;
import org.gradle.api.file.RegularFileProperty;
import org.gradle.api.logging.LogLevel;
Expand All @@ -27,10 +25,12 @@
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.PathSensitive;
import org.gradle.api.tasks.PathSensitivity;
import org.gradle.api.tasks.TaskAction;
import org.gradle.api.tasks.compile.JavaCompile;
import org.gradle.jvm.toolchain.JavaLanguageVersion;
import org.gradle.jvm.toolchain.JavaToolchainService;
import org.gradle.jvm.toolchain.internal.CurrentJvmToolchainSpec;
import org.gradle.work.InputChanges;

import java.io.File;
import java.io.FileOutputStream;
Expand Down Expand Up @@ -101,37 +101,34 @@ public RecompileSourceJar() {
getOptions().setFork(true);
getOptions().setIncremental(true);
getOptions().getIncrementalAfterFailure().set(true);
getInputJar().finalizeValueOnRead();
}

//Leave this as an anon class, so that gradle is aware of this. Lambdas can not be used during task tree analysis.
//noinspection Convert2Lambda
doLast(new Action<Task>() {
@Override
public void execute(Task doLast) {
try {
final File outputJar = RecompileSourceJar.this.ensureFileWorkspaceReady(RecompileSourceJar.this.getOutput());
final FileOutputStream fileOutputStream = new FileOutputStream(outputJar);
final ZipOutputStream outputZipStream = new ZipOutputStream(fileOutputStream);
final ZipBuildingFileTreeVisitor zipBuildingFileTreeVisitor = new ZipBuildingFileTreeVisitor(outputZipStream);
//Add the compiled output.
RecompileSourceJar.this.getDestinationDirectory().getAsFileTree().visit(zipBuildingFileTreeVisitor);
//Add the original resources.
RecompileSourceJar.this.getArchiveOperations().zipTree(RecompileSourceJar.this.getInputJar()).matching(filter -> filter.exclude("**/*.java")).visit(zipBuildingFileTreeVisitor);
outputZipStream.close();
fileOutputStream.close();
} catch (IOException e) {
throw new RuntimeException("Failed to create recompiled output jar", e);
}
@Override
@TaskAction
protected void compile(InputChanges inputs) {
super.compile(inputs);

if (getState().getDidWork()) {
final File outputJar = ensureFileWorkspaceReady(getOutput());
try (FileOutputStream fileOutputStream = new FileOutputStream(outputJar);
ZipOutputStream outputZipStream = new ZipOutputStream(fileOutputStream)) {
ZipBuildingFileTreeVisitor zipBuildingFileTreeVisitor = new ZipBuildingFileTreeVisitor(outputZipStream);
//Add the compiled output.
getDestinationDirectory().getAsFileTree().visit(zipBuildingFileTreeVisitor);
//Add the original resources.
getArchiveOperations().zipTree(getInputJar()).matching(filter -> filter.exclude("**/*.java")).visit(zipBuildingFileTreeVisitor);
} catch (IOException e) {
throw new RuntimeException("Failed to create recompiled output jar", e);
}
});

getInputJar().finalizeValueOnRead();
}
}

@Override
public RuntimeData getData() {
return data;
}

@Override
public RuntimeArguments getArguments() {
return arguments;
Expand Down

0 comments on commit c967125

Please sign in to comment.