mirror of
https://github.com/architectury/architectury-loom.git
synced 2026-03-28 04:07:01 -05:00
Disable remap classpath system prop (#1426)
* Disable remap classpath system prop * Fix build
This commit is contained in:
@@ -25,6 +25,7 @@
|
||||
package net.fabricmc.loom.task;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Objects;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@@ -36,6 +37,7 @@ import org.gradle.api.tasks.Sync;
|
||||
import org.gradle.api.tasks.TaskContainer;
|
||||
import org.gradle.api.tasks.TaskOutputs;
|
||||
import org.gradle.api.tasks.TaskProvider;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import net.fabricmc.loom.LoomGradleExtension;
|
||||
import net.fabricmc.loom.configuration.ide.RunConfigSettings;
|
||||
@@ -60,6 +62,82 @@ public abstract class LoomTasks implements Runnable {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
LoomGradleExtension extension = LoomGradleExtension.get(getProject());
|
||||
|
||||
if (!extension.disableObfuscation()) {
|
||||
registerMigrateMappingsTasks();
|
||||
}
|
||||
|
||||
var generateLog4jConfig = getTasks().register("generateLog4jConfig", GenerateLog4jConfigTask.class, t -> {
|
||||
t.setDescription("Generate the log4j config file");
|
||||
});
|
||||
|
||||
@Nullable TaskProvider<GenerateRemapClasspathTask> generateRemapClasspath = null;
|
||||
|
||||
if (!extension.disableObfuscation()) {
|
||||
generateRemapClasspath = getTasks().register("generateRemapClasspath", GenerateRemapClasspathTask.class, t -> {
|
||||
t.setDescription("Generate the remap classpath file");
|
||||
});
|
||||
}
|
||||
|
||||
// Make the lambda happy
|
||||
final @Nullable TaskProvider<GenerateRemapClasspathTask> generateRemapClasspathTask = generateRemapClasspath;
|
||||
|
||||
getTasks().register("generateDLIConfig", GenerateDLIConfigTask.class, t -> {
|
||||
t.setDescription("Generate the DevLaunchInjector config file");
|
||||
|
||||
// Must allow these IDE files to be generated first
|
||||
t.mustRunAfter("eclipse");
|
||||
|
||||
t.dependsOn(generateLog4jConfig);
|
||||
|
||||
if (!extension.disableObfuscation()) {
|
||||
GenerateRemapClasspathTask remapClasspath = Objects.requireNonNull(generateRemapClasspathTask.get());
|
||||
t.getRemapClasspathFile().set(remapClasspath.getRemapClasspathFile());
|
||||
}
|
||||
});
|
||||
|
||||
getTasks().register("configureLaunch", task -> {
|
||||
task.dependsOn(getTasks().named("generateDLIConfig"));
|
||||
task.dependsOn(getTasks().named("generateLog4jConfig"));
|
||||
|
||||
if (!extension.disableObfuscation()) {
|
||||
task.dependsOn(getTasks().named("generateRemapClasspath"));
|
||||
}
|
||||
|
||||
task.setDescription("Setup the required files to launch Minecraft");
|
||||
task.setGroup(Constants.TaskGroup.FABRIC);
|
||||
});
|
||||
|
||||
TaskProvider<ValidateAccessWidenerTask> validateAccessWidener = getTasks().register("validateAccessWidener", ValidateAccessWidenerTask.class, t -> {
|
||||
t.setDescription("Validate all the rules in the access widener against the Minecraft jar");
|
||||
t.setGroup("verification");
|
||||
});
|
||||
|
||||
getTasks().named("check").configure(task -> task.dependsOn(validateAccessWidener));
|
||||
|
||||
registerIDETasks();
|
||||
registerRunTasks();
|
||||
|
||||
// Must be done in afterEvaluate to allow time for the build script to configure the jar config.
|
||||
GradleUtils.afterSuccessfulEvaluation(getProject(), () -> {
|
||||
if (extension.getMinecraftJarConfiguration().get() == MinecraftJarConfiguration.SERVER_ONLY) {
|
||||
// Server only, nothing more to do.
|
||||
return;
|
||||
}
|
||||
|
||||
final MinecraftVersionMeta versionInfo = extension.getMinecraftProvider().getVersionInfo();
|
||||
|
||||
if (versionInfo == null) {
|
||||
// Something has gone wrong, don't register the task.
|
||||
return;
|
||||
}
|
||||
|
||||
registerClientSetupTasks(getTasks(), versionInfo.hasNativesToExtract());
|
||||
});
|
||||
}
|
||||
|
||||
private void registerMigrateMappingsTasks() {
|
||||
SourceSetHelper.getSourceSets(getProject()).all(sourceSet -> {
|
||||
if (SourceSetHelper.isMainSourceSet(sourceSet)) {
|
||||
getTasks().register("migrateMappings", MigrateMappingsTask.class, t -> {
|
||||
@@ -83,60 +161,6 @@ public abstract class LoomTasks implements Runnable {
|
||||
getTasks().register("migrateClassTweakerMappings", MigrateClassTweakerMappingsTask.class, t -> {
|
||||
t.setDescription("Migrates access widener and class tweaker mappings to a new version.");
|
||||
});
|
||||
|
||||
var generateLog4jConfig = getTasks().register("generateLog4jConfig", GenerateLog4jConfigTask.class, t -> {
|
||||
t.setDescription("Generate the log4j config file");
|
||||
});
|
||||
var generateRemapClasspath = getTasks().register("generateRemapClasspath", GenerateRemapClasspathTask.class, t -> {
|
||||
t.setDescription("Generate the remap classpath file");
|
||||
});
|
||||
getTasks().register("generateDLIConfig", GenerateDLIConfigTask.class, t -> {
|
||||
t.setDescription("Generate the DevLaunchInjector config file");
|
||||
|
||||
// Must allow these IDE files to be generated first
|
||||
t.mustRunAfter("eclipse");
|
||||
|
||||
t.dependsOn(generateLog4jConfig);
|
||||
t.getRemapClasspathFile().set(generateRemapClasspath.get().getRemapClasspathFile());
|
||||
});
|
||||
|
||||
getTasks().register("configureLaunch", task -> {
|
||||
task.dependsOn(getTasks().named("generateDLIConfig"));
|
||||
task.dependsOn(getTasks().named("generateLog4jConfig"));
|
||||
task.dependsOn(getTasks().named("generateRemapClasspath"));
|
||||
|
||||
task.setDescription("Setup the required files to launch Minecraft");
|
||||
task.setGroup(Constants.TaskGroup.FABRIC);
|
||||
});
|
||||
|
||||
TaskProvider<ValidateAccessWidenerTask> validateAccessWidener = getTasks().register("validateAccessWidener", ValidateAccessWidenerTask.class, t -> {
|
||||
t.setDescription("Validate all the rules in the access widener against the Minecraft jar");
|
||||
t.setGroup("verification");
|
||||
});
|
||||
|
||||
getTasks().named("check").configure(task -> task.dependsOn(validateAccessWidener));
|
||||
|
||||
registerIDETasks();
|
||||
registerRunTasks();
|
||||
|
||||
// Must be done in afterEvaluate to allow time for the build script to configure the jar config.
|
||||
GradleUtils.afterSuccessfulEvaluation(getProject(), () -> {
|
||||
LoomGradleExtension extension = LoomGradleExtension.get(getProject());
|
||||
|
||||
if (extension.getMinecraftJarConfiguration().get() == MinecraftJarConfiguration.SERVER_ONLY) {
|
||||
// Server only, nothing more to do.
|
||||
return;
|
||||
}
|
||||
|
||||
final MinecraftVersionMeta versionInfo = extension.getMinecraftProvider().getVersionInfo();
|
||||
|
||||
if (versionInfo == null) {
|
||||
// Something has gone wrong, don't register the task.
|
||||
return;
|
||||
}
|
||||
|
||||
registerClientSetupTasks(getTasks(), versionInfo.hasNativesToExtract());
|
||||
});
|
||||
}
|
||||
|
||||
private void registerIDETasks() {
|
||||
|
||||
@@ -89,6 +89,7 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask {
|
||||
protected abstract Property<String> getNativesDirectoryPath();
|
||||
|
||||
@InputFile
|
||||
@Optional
|
||||
public abstract RegularFileProperty getRemapClasspathFile();
|
||||
|
||||
@OutputFile
|
||||
@@ -128,7 +129,6 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask {
|
||||
|
||||
final LaunchConfig launchConfig = new LaunchConfig()
|
||||
.property("fabric.development", "true")
|
||||
.property("fabric.remapClasspathFile", getRemapClasspathFile().get().getAsFile().getAbsolutePath())
|
||||
.property("log4j.configurationFile", getLog4jConfigPaths().get())
|
||||
.property("log4j2.formatMsgNoLookups", "true")
|
||||
|
||||
@@ -137,6 +137,10 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask {
|
||||
.argument("client", "--assetsDir")
|
||||
.argument("client", assetsDirectory.getAbsolutePath());
|
||||
|
||||
if (getRemapClasspathFile().isPresent()) {
|
||||
launchConfig.property("fabric.remapClasspathFile", getRemapClasspathFile().get().getAsFile().getAbsolutePath());
|
||||
}
|
||||
|
||||
if (versionInfo.hasNativesToExtract()) {
|
||||
String nativesPath = getNativesDirectoryPath().get();
|
||||
|
||||
|
||||
@@ -62,9 +62,13 @@ class SimpleDebofTest extends Specification implements GradleProjectTestTrait {
|
||||
sourceFile.text = src
|
||||
|
||||
when:
|
||||
def result = gradle.run(task: "build")
|
||||
def result = gradle.run(tasks: [
|
||||
"build",
|
||||
"configureClientLaunch"
|
||||
])
|
||||
|
||||
then:
|
||||
result.task(":build").outcome == SUCCESS
|
||||
result.task(":configureClientLaunch").outcome == SUCCESS
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user