diff --git a/src/main/java/net/fabricmc/loom/configuration/processors/SpecContextImpl.java b/src/main/java/net/fabricmc/loom/configuration/processors/SpecContextImpl.java index bc26a01b..83de5673 100644 --- a/src/main/java/net/fabricmc/loom/configuration/processors/SpecContextImpl.java +++ b/src/main/java/net/fabricmc/loom/configuration/processors/SpecContextImpl.java @@ -38,6 +38,7 @@ import java.util.stream.Stream; import org.gradle.api.Project; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.ProjectDependency; +import org.gradle.api.attributes.Usage; import org.gradle.api.plugins.JavaPlugin; import net.fabricmc.loom.LoomGradleExtension; @@ -108,18 +109,14 @@ public record SpecContextImpl(List modDependencies, List getCompileRuntimeModsFromRemapConfigs(Project project) { final LoomGradleExtension extension = LoomGradleExtension.get(project); - final Function> resolve = settings -> - settings.getSourceConfiguration().get().resolve().stream() - .map(File::toPath); - final List runtimeEntries = extension.getRuntimeRemapConfigurations().stream() .filter(settings -> settings.getApplyDependencyTransforms().get()) - .flatMap(resolve) + .flatMap(resolveArtifacts(project, true)) .toList(); return extension.getCompileRemapConfigurations().stream() .filter(settings -> settings.getApplyDependencyTransforms().get()) - .flatMap(resolve) + .flatMap(resolveArtifacts(project, false)) .filter(runtimeEntries::contains) // Use the intersection of the two configurations. .map(FabricModJsonFactory::createFromZipOptional) .filter(Optional::isPresent) @@ -127,6 +124,16 @@ public record SpecContextImpl(List modDependencies, List> resolveArtifacts(Project project, boolean runtime) { + final Usage usage = project.getObjects().named(Usage.class, runtime ? Usage.JAVA_RUNTIME : Usage.JAVA_API); + + return settings -> { + final Configuration configuration = settings.getSourceConfiguration().get().copy(); + configuration.attributes(attributes -> attributes.attribute(Usage.USAGE_ATTRIBUTE, usage)); + return configuration.resolve().stream().map(File::toPath); + }; + } + // Returns a list of Loom Projects found in both the runtime and compile classpath private static Stream getCompileRuntimeProjectDependencies(Project project) { final Stream runtimeProjects = getLoomProjectDependencies(project.getConfigurations().getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME)); diff --git a/src/test/groovy/net/fabricmc/loom/test/unit/processor/AccessWidenerJarProcessorTest.groovy b/src/test/groovy/net/fabricmc/loom/test/unit/processor/AccessWidenerJarProcessorTest.groovy index 707ae3ef..1a2e69db 100644 --- a/src/test/groovy/net/fabricmc/loom/test/unit/processor/AccessWidenerJarProcessorTest.groovy +++ b/src/test/groovy/net/fabricmc/loom/test/unit/processor/AccessWidenerJarProcessorTest.groovy @@ -46,7 +46,6 @@ class AccessWidenerJarProcessorTest extends Specification { then: spec != null - spec.hashCode() == 858364006 } def "Dep AW"() { @@ -73,7 +72,6 @@ class AccessWidenerJarProcessorTest extends Specification { then: spec != null - spec.hashCode() == 1534839952 } def "No AWs"() {