mirror of
https://github.com/architectury/architectury-loom.git
synced 2026-04-02 13:37:45 -05:00
migrate away fabric-mixin-compile-extensions, fix root/sub project issues wrt mixin/loom presence hopefully once and for all
This commit is contained in:
@@ -34,8 +34,13 @@ import net.fabricmc.loom.util.*;
|
||||
import org.gradle.api.*;
|
||||
import org.gradle.api.artifacts.Configuration;
|
||||
import org.gradle.api.artifacts.Dependency;
|
||||
import org.gradle.api.artifacts.component.ModuleComponentIdentifier;
|
||||
import org.gradle.api.artifacts.dsl.DependencyHandler;
|
||||
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
|
||||
import org.gradle.api.artifacts.result.DependencyResult;
|
||||
import org.gradle.api.artifacts.result.ResolvedArtifactResult;
|
||||
import org.gradle.api.artifacts.result.ResolvedComponentResult;
|
||||
import org.gradle.api.artifacts.result.ResolvedDependencyResult;
|
||||
import org.gradle.api.plugins.JavaPlugin;
|
||||
import org.gradle.api.plugins.JavaPluginConvention;
|
||||
import org.gradle.api.publish.Publication;
|
||||
@@ -54,6 +59,7 @@ import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class AbstractPlugin implements Plugin<Project> {
|
||||
protected Project project;
|
||||
@@ -170,6 +176,39 @@ public class AbstractPlugin implements Plugin<Project> {
|
||||
EclipseModel eclipseModel = (EclipseModel) project.getExtensions().getByName("eclipse");
|
||||
}
|
||||
|
||||
private void addModule(Project proj, String configuration, DependencyResult module) {
|
||||
if (module instanceof ResolvedDependencyResult) {
|
||||
if (module.getFrom().getId() instanceof ModuleComponentIdentifier) {
|
||||
ModuleComponentIdentifier mci = ((ModuleComponentIdentifier) module.getFrom().getId());
|
||||
proj.getDependencies().add(configuration, proj.getDependencies().module(mci.getGroup() + ":" + mci.getModule() + ":" + mci.getVersion()));
|
||||
}
|
||||
|
||||
for (DependencyResult child : ((ResolvedDependencyResult) module).getSelected().getDependencies()) {
|
||||
addModule(proj, configuration, child);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean findAndAddModule(Project project, String configuration, DependencyResult dep, Predicate<ModuleComponentIdentifier> predicate) {
|
||||
boolean found = false;
|
||||
|
||||
if (dep instanceof ResolvedDependencyResult) {
|
||||
if (dep.getFrom().getId() instanceof ModuleComponentIdentifier) {
|
||||
ModuleComponentIdentifier mci = ((ModuleComponentIdentifier) dep.getFrom().getId());
|
||||
if (predicate.test(mci)) {
|
||||
addModule(project, configuration, dep);
|
||||
found = true;
|
||||
}
|
||||
}
|
||||
|
||||
for (DependencyResult child : ((ResolvedDependencyResult) dep).getSelected().getDependencies()) {
|
||||
findAndAddModule(project, configuration, child, predicate);
|
||||
}
|
||||
}
|
||||
|
||||
return found;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add Minecraft dependencies to compile time
|
||||
*/
|
||||
@@ -182,6 +221,17 @@ public class AbstractPlugin implements Plugin<Project> {
|
||||
Javadoc javadoc = (Javadoc) project.getTasks().getByName(JavaPlugin.JAVADOC_TASK_NAME);
|
||||
javadoc.setClasspath(main.getOutput().plus(main.getCompileClasspath()));
|
||||
|
||||
// Add Mixin dependencies
|
||||
Project p = project;
|
||||
while (true) {
|
||||
boolean found = false;
|
||||
for (DependencyResult dep : p.getBuildscript().getConfigurations().getByName("classpath").getIncoming().getResolutionResult().getRoot().getDependencies()) {
|
||||
found = findAndAddModule(project, "annotationProcessor", dep, (mci) -> ("net.fabricmc".equals(mci.getGroup()) && "fabric-mixin-compile-extensions".equals(mci.getModule())));
|
||||
}
|
||||
if (found || AbstractPlugin.isRootProject(p)) break;
|
||||
p = p.getRootProject();
|
||||
}
|
||||
|
||||
project.afterEvaluate(project1 -> {
|
||||
LoomGradleExtension extension = project1.getExtensions().getByType(LoomGradleExtension.class);
|
||||
|
||||
@@ -233,11 +283,6 @@ public class AbstractPlugin implements Plugin<Project> {
|
||||
SetupIntelijRunConfigs.setup(project1);
|
||||
}
|
||||
|
||||
// add dependencies for mixin annotation processor
|
||||
DependencyHandler handler = project1.getDependencies();
|
||||
handler.add("annotationProcessor", "net.fabricmc:sponge-mixin:" + extension.getMixinVersion());
|
||||
handler.add("annotationProcessor", "net.fabricmc:fabric-loom:" + extension.getLoomVersion());
|
||||
|
||||
// Enables the default mod remapper
|
||||
if (extension.remapMod) {
|
||||
AbstractArchiveTask jarTask = (AbstractArchiveTask) project1.getTasks().getByName("jar");
|
||||
|
||||
Reference in New Issue
Block a user