Fix gradle module metadatas not including api deps in runtimeElements (#540)
This commit is contained in:
		
							parent
							
								
									babbc55586
								
							
						
					
					
						commit
						9ddff5f31a
					
				
					 4 changed files with 36 additions and 17 deletions
				
			
		|  | @ -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); | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
|  |  | |||
|  | @ -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" | ||||
| 	); | ||||
|  |  | |||
|  | @ -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; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  |  | |||
|  | @ -31,6 +31,7 @@ import org.gradle.api.plugins.JavaPlugin; | |||
| import org.objectweb.asm.Opcodes; | ||||
| 
 | ||||
| import net.fabricmc.loom.configuration.RemappedConfigurationEntry; | ||||
| import net.fabricmc.loom.configuration.RemappedConfigurationEntry.PublishingMode; | ||||
| 
 | ||||
| public class Constants { | ||||
| 	public static final String LIBRARIES_BASE = "https://libraries.minecraft.net/"; | ||||
|  | @ -44,13 +45,13 @@ public class Constants { | |||
| 	public static final int ASM_VERSION = Opcodes.ASM9; | ||||
| 
 | ||||
| 	public static final List<RemappedConfigurationEntry> MOD_COMPILE_ENTRIES = ImmutableList.of( | ||||
| 			new RemappedConfigurationEntry("modApi", JavaPlugin.API_CONFIGURATION_NAME, true, true, JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME), | ||||
| 			new RemappedConfigurationEntry("modImplementation", JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, true, true, JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME), | ||||
| 			new RemappedConfigurationEntry("modRuntime", JavaPlugin.RUNTIME_ONLY_CONFIGURATION_NAME, false, true, "", "modRuntimeOnly"), | ||||
| 			new RemappedConfigurationEntry("modCompileOnly", JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME, true, false, ""), | ||||
| 			new RemappedConfigurationEntry("modCompileOnlyApi", JavaPlugin.COMPILE_ONLY_API_CONFIGURATION_NAME, true, false, JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME), | ||||
| 			new RemappedConfigurationEntry("modRuntimeOnly", JavaPlugin.RUNTIME_ONLY_CONFIGURATION_NAME, false, true, JavaPlugin.RUNTIME_ELEMENTS_CONFIGURATION_NAME), | ||||
| 			new RemappedConfigurationEntry("modLocalRuntime", Configurations.LOCAL_RUNTIME, false, true, "") | ||||
| 			new RemappedConfigurationEntry("modApi", JavaPlugin.API_CONFIGURATION_NAME, true, true, PublishingMode.COMPILE_AND_RUNTIME), | ||||
| 			new RemappedConfigurationEntry("modImplementation", JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, true, true, PublishingMode.RUNTIME_ONLY), | ||||
| 			new RemappedConfigurationEntry("modRuntime", JavaPlugin.RUNTIME_ONLY_CONFIGURATION_NAME, false, true, PublishingMode.NONE, "modRuntimeOnly"), | ||||
| 			new RemappedConfigurationEntry("modCompileOnly", JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME, true, false, PublishingMode.NONE), | ||||
| 			new RemappedConfigurationEntry("modCompileOnlyApi", JavaPlugin.COMPILE_ONLY_API_CONFIGURATION_NAME, true, false, PublishingMode.COMPILE_ONLY), | ||||
| 			new RemappedConfigurationEntry("modRuntimeOnly", JavaPlugin.RUNTIME_ONLY_CONFIGURATION_NAME, false, true, PublishingMode.RUNTIME_ONLY), | ||||
| 			new RemappedConfigurationEntry("modLocalRuntime", Configurations.LOCAL_RUNTIME, false, true, PublishingMode.NONE) | ||||
| 	); | ||||
| 
 | ||||
| 	private Constants() { | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue