Apply all buildscript configurations across all parent projects to try and fix fernflower classpath issues again.

If you have any better suggestions please let me know.
dev/0.11
modmuss50 2021-01-21 19:40:59 +00:00
parent b622544cbe
commit 4a30993da7
1 changed files with 17 additions and 9 deletions

View File

@ -24,11 +24,12 @@
package net.fabricmc.loom.decompilers.fernflower;
import java.util.HashSet;
import java.util.Set;
import org.gradle.api.Action;
import org.gradle.api.Project;
import org.gradle.api.artifacts.ConfigurationContainer;
import org.gradle.api.artifacts.dsl.DependencyHandler;
import org.gradle.api.file.FileCollection;
import org.gradle.api.artifacts.Configuration;
import org.gradle.process.ExecResult;
import org.gradle.process.JavaExecSpec;
@ -40,14 +41,21 @@ import org.gradle.process.JavaExecSpec;
*/
public class ForkingJavaExec {
public static ExecResult javaexec(Project project, Action<? super JavaExecSpec> action) {
ConfigurationContainer configurations = project.getBuildscript().getConfigurations();
DependencyHandler handler = project.getDependencies();
FileCollection classpath = configurations.getByName("classpath")//
.plus(configurations.detachedConfiguration(handler.localGroovy()));
return project.javaexec(spec -> {
spec.classpath(classpath);
spec.classpath(getForkedFernflowerClasspath(project));
action.execute(spec);
});
}
private static Set<Configuration> getForkedFernflowerClasspath(Project project) {
Set<Configuration> allConfigurations = new HashSet<>();
Project p = project;
do {
allConfigurations.addAll(p.getBuildscript().getConfigurations());
p = p.getRootProject();
} while (p != p.getRootProject());
return allConfigurations;
}
}