add correct Maven dependencies to maven-publish mod POMs (#79)
This commit is contained in:
		
							parent
							
								
									9a33598608
								
							
						
					
					
						commit
						dc69315715
					
				
					 2 changed files with 50 additions and 4 deletions
				
			
		|  | @ -25,6 +25,9 @@ | |||
| package net.fabricmc.loom; | ||||
| 
 | ||||
| import com.google.common.collect.ImmutableMap; | ||||
| import groovy.util.Node; | ||||
| import groovy.util.NodeList; | ||||
| import groovy.xml.QName; | ||||
| import net.fabricmc.loom.providers.MappingsProvider; | ||||
| import net.fabricmc.loom.providers.MinecraftProvider; | ||||
| import net.fabricmc.loom.providers.ModRemapperProvider; | ||||
|  | @ -36,10 +39,21 @@ import net.fabricmc.loom.util.NestedJars; | |||
| import net.fabricmc.loom.util.SetupIntelijRunConfigs; | ||||
| import org.gradle.api.*; | ||||
| import org.gradle.api.artifacts.Configuration; | ||||
| import org.gradle.api.artifacts.Dependency; | ||||
| import org.gradle.api.artifacts.ModuleDependency; | ||||
| import org.gradle.api.artifacts.ProjectDependency; | ||||
| import org.gradle.api.artifacts.dsl.DependencyHandler; | ||||
| import org.gradle.api.artifacts.maven.Conf2ScopeMappingContainer; | ||||
| import org.gradle.api.artifacts.repositories.MavenArtifactRepository; | ||||
| import org.gradle.api.plugins.JavaPlugin; | ||||
| import org.gradle.api.plugins.JavaPluginConvention; | ||||
| import org.gradle.api.plugins.MavenPlugin; | ||||
| import org.gradle.api.plugins.MavenPluginConvention; | ||||
| import org.gradle.api.publish.Publication; | ||||
| import org.gradle.api.publish.PublishingExtension; | ||||
| import org.gradle.api.publish.maven.MavenPublication; | ||||
| import org.gradle.api.publish.maven.tasks.AbstractPublishToMaven; | ||||
| import org.gradle.api.publish.maven.tasks.GenerateMavenPom; | ||||
| import org.gradle.api.tasks.SourceSet; | ||||
| import org.gradle.api.tasks.bundling.AbstractArchiveTask; | ||||
| import org.gradle.api.tasks.compile.JavaCompile; | ||||
|  | @ -49,6 +63,9 @@ import org.gradle.plugins.ide.idea.model.IdeaModel; | |||
| 
 | ||||
| import java.io.File; | ||||
| import java.io.IOException; | ||||
| import java.lang.reflect.Field; | ||||
| import java.lang.reflect.Method; | ||||
| import java.util.Collections; | ||||
| import java.util.Map; | ||||
| import java.util.Set; | ||||
| 
 | ||||
|  | @ -77,7 +94,7 @@ public class AbstractPlugin implements Plugin<Project> { | |||
| 		addMavenRepo(target, "Mojang", "https://libraries.minecraft.net/"); | ||||
| 
 | ||||
| 		Configuration compileModsConfig = project.getConfigurations().maybeCreate(Constants.COMPILE_MODS); | ||||
| 		compileModsConfig.setTransitive(false); // Dont get transitive deps of mods | ||||
| 		compileModsConfig.setTransitive(false); | ||||
| 		Configuration compileModsMappedConfig = project.getConfigurations().maybeCreate(Constants.COMPILE_MODS_MAPPED); | ||||
| 		compileModsMappedConfig.setTransitive(false); // Dont get transitive deps of mods | ||||
| 		Configuration minecraftNamedConfig = project.getConfigurations().maybeCreate(Constants.MINECRAFT_NAMED); | ||||
|  | @ -127,9 +144,9 @@ public class AbstractPlugin implements Plugin<Project> { | |||
| 					}); | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 		} | ||||
| 
 | ||||
| 		configureMaven(); | ||||
| 	} | ||||
| 
 | ||||
| 	/** | ||||
|  | @ -240,7 +257,6 @@ public class AbstractPlugin implements Plugin<Project> { | |||
| 			dependencyManager.addProvider(new MinecraftProvider()); | ||||
| 			dependencyManager.addProvider(new MappingsProvider()); | ||||
| 			dependencyManager.addProvider(new ModRemapperProvider()); | ||||
| 
 | ||||
| 			dependencyManager.handleDependencies(project1); | ||||
| 
 | ||||
| 			project1.getTasks().getByName("idea").finalizedBy(project1.getTasks().getByName("genIdeaWorkspace")); | ||||
|  | @ -285,6 +301,36 @@ public class AbstractPlugin implements Plugin<Project> { | |||
| 		}); | ||||
| 	} | ||||
| 
 | ||||
| 	protected void configureMaven() { | ||||
| 		project.afterEvaluate((p) -> { | ||||
| 			Configuration compileModsConfig = p.getConfigurations().getByName(Constants.COMPILE_MODS); | ||||
| 
 | ||||
| 			// add modsCompile to maven-publish | ||||
| 			PublishingExtension mavenPublish = p.getExtensions().findByType(PublishingExtension.class); | ||||
| 			if (mavenPublish != null) { | ||||
| 				mavenPublish.publications((publications) -> { | ||||
| 					for (Publication publication : publications) { | ||||
| 						if (publication instanceof MavenPublication) { | ||||
| 							((MavenPublication) publication).pom((pom) -> { | ||||
| 								pom.withXml((xml) -> { | ||||
| 									Node dependencies = xml.asNode().appendNode("dependencies"); | ||||
| 
 | ||||
| 									for (Dependency dependency : compileModsConfig.getAllDependencies()) { | ||||
| 										Node depNode = dependencies.appendNode("dependency"); | ||||
| 										depNode.appendNode("groupId", dependency.getGroup()); | ||||
| 										depNode.appendNode("artifactId", dependency.getName()); | ||||
| 										depNode.appendNode("version", dependency.getVersion()); | ||||
| 										depNode.appendNode("scope", "compile"); | ||||
| 									} | ||||
| 								}); | ||||
| 							}); | ||||
| 						} | ||||
| 					} | ||||
| 				}); | ||||
| 			} | ||||
| 		}); | ||||
| 	} | ||||
| 
 | ||||
| 	public static boolean isRootProject(Project project){ | ||||
| 		return project.getRootProject() == project; | ||||
| 	} | ||||
|  |  | |||
|  | @ -122,7 +122,7 @@ public class LoomDependencyManager { | |||
| 		libraries.get("common").getAsJsonArray().forEach(jsonElement -> { | ||||
| 			String name = jsonElement.getAsJsonObject().get("name").getAsString(); | ||||
| 
 | ||||
| 			Configuration configuration = project.getConfigurations().getByName("compile"); | ||||
| 			Configuration configuration = project.getConfigurations().getByName(Constants.MINECRAFT_DEPENDENCIES); | ||||
| 			ExternalModuleDependency modDep = (ExternalModuleDependency) project.getDependencies().create(name); | ||||
| 			modDep.setTransitive(false); | ||||
| 			configuration.getDependencies().add(modDep); | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue