Skip to content

Commit 3f40205

Browse files
authored
Use Project#javaexec instead of creating a JavaExec task (#744)
* Use Project#javaexec instead of creating a JavaExec task * Don't close the logger there * Forgot to throw here
1 parent a74f4b1 commit 3f40205

File tree

3 files changed

+74
-82
lines changed

3 files changed

+74
-82
lines changed

src/common/java/net/minecraftforge/gradle/common/task/JarExec.java

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.gradle.api.tasks.Input;
3838
import org.gradle.api.tasks.InputFile;
3939
import org.gradle.api.tasks.InputFiles;
40-
import org.gradle.api.tasks.JavaExec;
4140
import org.gradle.api.tasks.Optional;
4241
import org.gradle.api.tasks.TaskAction;
4342

@@ -69,37 +68,35 @@ public void apply() throws IOException {
6968

7069
File logFile = new File(workDir, "log.txt");
7170

72-
JavaExec java = getProject().getTasks().create("_java_exec_" + index++ + "_", JavaExec.class);
7371
try (OutputStream log = hasLog ? new BufferedOutputStream(new FileOutputStream(logFile)) : NULL) {
7472
PrintWriter printer = new PrintWriter(log, true);
75-
// Execute command
76-
java.setArgs(filterArgs());
77-
printer.println("Args: " + java.getArgs().stream().map(m -> '"' + m +'"').collect(Collectors.joining(", ")));
78-
if (getClasspath() == null)
79-
java.setClasspath(getProject().files(jar));
80-
else
81-
java.setClasspath(getProject().files(jar, getClasspath()));
82-
java.getClasspath().forEach(f -> printer.println("Classpath: " + f.getAbsolutePath()));
83-
java.setWorkingDir(workDir);
84-
printer.println("WorkDir: " + workDir);
85-
java.setMain(mainClass);
86-
printer.println("Main: " + mainClass);
87-
printer.println("====================================");
88-
java.setStandardOutput(new OutputStream() {
89-
@Override
90-
public void flush() throws IOException {
91-
log.flush();
92-
}
93-
@Override
94-
public void close() {}
95-
@Override
96-
public void write(int b) throws IOException {
97-
log.write(b);
98-
}
99-
});
100-
java.exec();
101-
} finally {
102-
java.setEnabled(false);
73+
getProject().javaexec(java -> {
74+
// Execute command
75+
java.setArgs(filterArgs());
76+
printer.println("Args: " + java.getArgs().stream().map(m -> '"' + m +'"').collect(Collectors.joining(", ")));
77+
if (getClasspath() == null)
78+
java.setClasspath(getProject().files(jar));
79+
else
80+
java.setClasspath(getProject().files(jar, getClasspath()));
81+
java.getClasspath().forEach(f -> printer.println("Classpath: " + f.getAbsolutePath()));
82+
java.setWorkingDir(workDir);
83+
printer.println("WorkDir: " + workDir);
84+
java.setMain(mainClass);
85+
printer.println("Main: " + mainClass);
86+
printer.println("====================================");
87+
java.setStandardOutput(new OutputStream() {
88+
@Override
89+
public void flush() throws IOException {
90+
log.flush();
91+
}
92+
@Override
93+
public void close() {}
94+
@Override
95+
public void write(int b) throws IOException {
96+
log.write(b);
97+
}
98+
});
99+
}).rethrowFailure().assertNormalExitValue();
103100
}
104101

105102
if (hasLog)

src/mcp/java/net/minecraftforge/gradle/mcp/function/ExecuteFunction.java

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import net.minecraftforge.gradle.common.util.HashStore;
2424
import net.minecraftforge.gradle.common.util.Utils;
2525
import net.minecraftforge.gradle.mcp.util.MCPEnvironment;
26-
import org.gradle.api.tasks.JavaExec;
2726

2827
import java.io.BufferedOutputStream;
2928
import java.io.File;
@@ -120,25 +119,23 @@ public File execute(MCPEnvironment environment) throws IOException, InterruptedE
120119
jarFile.close();
121120

122121
// Execute command
123-
JavaExec java = environment.project.getTasks().create("_decompileJar" + new Random().nextInt(), JavaExec.class);
124122
try (BufferedOutputStream log_out = new BufferedOutputStream(new FileOutputStream(environment.getFile("console.log")))) {
125-
PrintWriter writer = new PrintWriter(log_out);
126-
Function<String,String> quote = s -> '"' + s + '"';
127-
writer.println("JVM Args: " + jvmArgList.stream().map(quote).collect(Collectors.joining(", ")));
128-
writer.println("Run Args: " + runArgList.stream().map(quote).collect(Collectors.joining(", ")));
129-
writer.println("Classpath: " + jar.getAbsolutePath());
130-
writer.println("Working Dir: " + workingDir.getAbsolutePath());
131-
writer.println("Main Class: " + mainClass);
132-
writer.flush();
133-
java.setJvmArgs(jvmArgList);
134-
java.setArgs(runArgList);
135-
java.setClasspath(environment.project.files(jar));
136-
java.setWorkingDir(workingDir);
137-
java.setMain(mainClass);
138-
java.setStandardOutput(log_out);
139-
java.exec();
140-
} finally {
141-
java.setEnabled(false);
123+
environment.project.javaexec(java -> {
124+
PrintWriter writer = new PrintWriter(log_out);
125+
Function<String, String> quote = s -> '"' + s + '"';
126+
writer.println("JVM Args: " + jvmArgList.stream().map(quote).collect(Collectors.joining(", ")));
127+
writer.println("Run Args: " + runArgList.stream().map(quote).collect(Collectors.joining(", ")));
128+
writer.println("Classpath: " + jar.getAbsolutePath());
129+
writer.println("Working Dir: " + workingDir.getAbsolutePath());
130+
writer.println("Main Class: " + mainClass);
131+
writer.flush();
132+
java.setJvmArgs(jvmArgList);
133+
java.setArgs(runArgList);
134+
java.setClasspath(environment.project.files(jar));
135+
java.setWorkingDir(workingDir);
136+
java.setMain(mainClass);
137+
java.setStandardOutput(log_out);
138+
}).rethrowFailure().assertNormalExitValue();
142139
}
143140

144141
// Return the output file

src/patcher/java/net/minecraftforge/gradle/patcher/task/TaskReobfuscateJar.java

Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -94,45 +94,45 @@ public void apply() throws IOException {
9494
workDir.mkdirs();
9595
}
9696

97-
JavaExec java = getProject().getTasks().create("_reobfuscateJar_" + getName() + new Random().nextInt(), JavaExec.class);
9897
try (OutputStream log = new BufferedOutputStream(new FileOutputStream(new File(workDir, "log.txt")))) {
99-
// Execute command
100-
java.setArgs(_args);
101-
if (getClasspath() == null) {
102-
java.setClasspath(getProject().files(jar));
103-
} else {
104-
java.setClasspath(getProject().files(getClasspath(), jar));
105-
}
106-
java.setWorkingDir(workDir);
107-
java.setMain(mainClass);
108-
java.setStandardOutput(new OutputStream() {
109-
@Override
110-
public void flush() throws IOException {
111-
log.flush();
112-
}
113-
@Override
114-
public void close() {}
115-
@Override
116-
public void write(int b) throws IOException {
117-
log.write(b);
98+
getProject().javaexec(java -> {
99+
// Execute command
100+
java.setArgs(_args);
101+
if (getClasspath() == null) {
102+
java.setClasspath(getProject().files(jar));
103+
} else {
104+
java.setClasspath(getProject().files(getClasspath(), jar));
118105
}
119-
});
120-
java.exec();
106+
java.setWorkingDir(workDir);
107+
java.setMain(mainClass);
108+
java.setStandardOutput(new OutputStream() {
109+
@Override
110+
public void flush() throws IOException {
111+
log.flush();
112+
}
113+
@Override
114+
public void close() {}
115+
@Override
116+
public void write(int b) throws IOException {
117+
log.write(b);
118+
}
119+
});
120+
}).rethrowFailure().assertNormalExitValue();
121121

122122
List<String> lines = Files.readLines(getSrg(), StandardCharsets.UTF_8);
123123
lines = lines.stream().map(line -> line.split("#")[0]).filter(l -> l != null & !l.trim().isEmpty()).collect(Collectors.toList()); //Strip empty/comments
124124

125125
Set<String> packages = new HashSet<>();
126126
lines.stream()
127-
.filter(line -> !line.startsWith("\t") || (line.indexOf(':') != -1 && line.startsWith("CL:")))
128-
.map(line -> line.indexOf(':') != -1 ? line.substring(4).split(" ") : line.split(" "))
129-
.filter(pts -> pts.length == 2)
130-
.forEach(pts -> {
131-
int idx = pts[0].lastIndexOf('/');
132-
if (idx != -1) {
133-
packages.add(pts[0].substring(0, idx + 1) + "package-info.class");
134-
}
135-
});
127+
.filter(line -> !line.startsWith("\t") || (line.indexOf(':') != -1 && line.startsWith("CL:")))
128+
.map(line -> line.indexOf(':') != -1 ? line.substring(4).split(" ") : line.split(" "))
129+
.filter(pts -> pts.length == 2)
130+
.forEach(pts -> {
131+
int idx = pts[0].lastIndexOf('/');
132+
if (idx != -1) {
133+
packages.add(pts[0].substring(0, idx + 1) + "package-info.class");
134+
}
135+
});
136136

137137
try (ZipFile zin = new ZipFile(output_temp);
138138
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(getOutput()))) {
@@ -153,8 +153,6 @@ public void write(int b) throws IOException {
153153
}
154154

155155
output_temp.delete();
156-
} finally {
157-
java.setEnabled(false);
158156
}
159157
}
160158

0 commit comments

Comments
 (0)