From 710644129810dbefbb79c0b37781fd2bb3ed77cd Mon Sep 17 00:00:00 2001 From: modmuss Date: Sun, 22 Oct 2023 13:52:17 +0100 Subject: [PATCH] Fix extending the client/datagen compile/runtime classpath from main (#967) --- .../loom/configuration/FabricApiExtension.java | 14 ++++++++++++-- .../providers/minecraft/MinecraftSourceSets.java | 5 +++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/configuration/FabricApiExtension.java b/src/main/java/net/fabricmc/loom/configuration/FabricApiExtension.java index 81ac13f7..fb202727 100644 --- a/src/main/java/net/fabricmc/loom/configuration/FabricApiExtension.java +++ b/src/main/java/net/fabricmc/loom/configuration/FabricApiExtension.java @@ -36,6 +36,7 @@ import javax.xml.parsers.DocumentBuilderFactory; import org.gradle.api.Action; import org.gradle.api.Project; +import org.gradle.api.artifacts.ConfigurationContainer; import org.gradle.api.artifacts.Dependency; import org.gradle.api.file.RegularFileProperty; import org.gradle.api.plugins.JavaPlugin; @@ -142,15 +143,16 @@ public abstract class FabricApiExtension { sourceSets.create(DATAGEN_SOURCESET_NAME, sourceSet -> { sourceSet.setCompileClasspath( sourceSet.getCompileClasspath() - .plus(mainSourceSet.getCompileClasspath()) .plus(mainSourceSet.getOutput()) ); sourceSet.setRuntimeClasspath( sourceSet.getRuntimeClasspath() - .plus(mainSourceSet.getRuntimeClasspath()) .plus(mainSourceSet.getOutput()) ); + + extendsFrom(getProject(), sourceSet.getCompileClasspathConfigurationName(), mainSourceSet.getCompileClasspathConfigurationName()); + extendsFrom(getProject(), sourceSet.getRuntimeClasspathConfigurationName(), mainSourceSet.getRuntimeClasspathConfigurationName()); }); extension.getMods().create(settings.getModId().get(), mod -> { @@ -298,4 +300,12 @@ public abstract class FabricApiExtension { super(cause); } } + + private static void extendsFrom(Project project, String name, String extendsFrom) { + final ConfigurationContainer configurations = project.getConfigurations(); + + configurations.named(name, configuration -> { + configuration.extendsFrom(configurations.getByName(extendsFrom)); + }); + } } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftSourceSets.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftSourceSets.java index e28833e2..7542ea28 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftSourceSets.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftSourceSets.java @@ -195,15 +195,16 @@ public abstract sealed class MinecraftSourceSets permits MinecraftSourceSets.Sin clientOnlySourceSet.setCompileClasspath( clientOnlySourceSet.getCompileClasspath() - .plus(mainSourceSet.getCompileClasspath()) .plus(mainSourceSet.getOutput()) ); clientOnlySourceSet.setRuntimeClasspath( clientOnlySourceSet.getRuntimeClasspath() - .plus(mainSourceSet.getRuntimeClasspath()) .plus(mainSourceSet.getOutput()) ); + extendsFrom(project, clientOnlySourceSet.getCompileClasspathConfigurationName(), mainSourceSet.getCompileClasspathConfigurationName()); + extendsFrom(project, clientOnlySourceSet.getRuntimeClasspathConfigurationName(), mainSourceSet.getRuntimeClasspathConfigurationName()); + RemapConfigurations.configureClientConfigurations(project, clientOnlySourceSet); // Include the client only output in the jars