diff options
Diffstat (limited to 'src/main/java/net/fabricmc/loom/configuration')
3 files changed, 28 insertions, 10 deletions
diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index e39634af..f99d7216 100644 --- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -96,8 +96,8 @@ public final class CompileConfiguration { extendsFrom(JavaPlugin.TEST_RUNTIME_CLASSPATH_CONFIGURATION_NAME, entry.getRemappedConfiguration(), project); } - if (entry.hasConsumerConfiguration()) { - extendsFrom(entry.consumerConfiguration(), entry.sourceConfiguration(), project); + for (String outgoingConfiguration : entry.publishingMode().outgoingConfigurations()) { + extendsFrom(outgoingConfiguration, entry.sourceConfiguration(), project); } } diff --git a/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java b/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java index d49d0b7a..29c312ea 100644 --- a/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java +++ b/src/main/java/net/fabricmc/loom/configuration/MavenPublication.java @@ -33,6 +33,7 @@ import java.util.Set; import java.util.WeakHashMap; import java.util.concurrent.atomic.AtomicBoolean; +import com.google.common.collect.ImmutableMap; import groovy.util.Node; import org.gradle.api.Project; import org.gradle.api.artifacts.Configuration; @@ -48,7 +49,9 @@ import net.fabricmc.loom.util.DeprecationHelper; import net.fabricmc.loom.util.GroovyXmlUtil; public final class MavenPublication { - private static final Map<String, String> CONFIGURATION_TO_SCOPE = Map.of( + // ImmutableMap is needed since it guarantees ordering + // (compile must go before runtime, or otherwise dependencies might get the "weaker" runtime scope). + private static final Map<String, String> CONFIGURATION_TO_SCOPE = ImmutableMap.of( JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME, "compile", JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME, "runtime" ); diff --git a/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java b/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java index f7f43958..2eba6f40 100644 --- a/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java +++ b/src/main/java/net/fabricmc/loom/configuration/RemappedConfigurationEntry.java @@ -24,17 +24,15 @@ package net.fabricmc.loom.configuration; +import java.util.Set; + import org.gradle.api.artifacts.ConfigurationContainer; import org.gradle.api.plugins.JavaPlugin; import org.jetbrains.annotations.Nullable; -public record RemappedConfigurationEntry(String sourceConfiguration, String targetConfiguration, boolean compileClasspath, boolean runtimeClasspath, String consumerConfiguration, @Nullable String replacedWith) { - public RemappedConfigurationEntry(String sourceConfiguration, String targetConfiguration, boolean compileClasspath, boolean runtimeClasspath, String consumerConfiguration) { - this(sourceConfiguration, targetConfiguration, compileClasspath, runtimeClasspath, consumerConfiguration, null); - } - - public boolean hasConsumerConfiguration() { - return consumerConfiguration != null && !consumerConfiguration.isEmpty(); +public record RemappedConfigurationEntry(String sourceConfiguration, String targetConfiguration, boolean compileClasspath, boolean runtimeClasspath, PublishingMode publishingMode, @Nullable String replacedWith) { + public RemappedConfigurationEntry(String sourceConfiguration, String targetConfiguration, boolean compileClasspath, boolean runtimeClasspath, PublishingMode publishingMode) { + this(sourceConfiguration, targetConfiguration, compileClasspath, runtimeClasspath, publishingMode, null); } public String getRemappedConfiguration() { @@ -48,4 +46,21 @@ public record RemappedConfigurationEntry(String sourceConfiguration, String targ return targetConfiguration; } + + public enum PublishingMode { + NONE, + COMPILE_ONLY(JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME), + RUNTIME_ONLY(JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME), + COMPILE_AND_RUNTIME(JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME, JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME); + + private final Set<String> outgoingConfigurations; + + PublishingMode(String... outgoingConfigurations) { + this.outgoingConfigurations = Set.of(outgoingConfigurations); + } + + public Set<String> outgoingConfigurations() { + return outgoingConfigurations; + } + } } |