Add mixin ap to projects in a "better way" (#144)
* Add mixin ap to projects in a "better way" Signed-off-by: liach <liach@users.noreply.github.com> * Remove obsolete bad code Signed-off-by: liach <liach@users.noreply.github.com> * Use a field in constants instead Signed-off-by: liach <liach@users.noreply.github.com> * String format does not work Signed-off-by: liach <liach@users.noreply.github.com>
This commit is contained in:
parent
458eaabb7e
commit
c8ef934bda
3 changed files with 12 additions and 61 deletions
|
@ -47,7 +47,6 @@ dependencies {
|
|||
implementation ('net.fabricmc:tiny-remapper:0.2.0.56') {
|
||||
transitive = false
|
||||
}
|
||||
implementation ('net.fabricmc:fabric-mixin-compile-extensions:0.2.0.3')
|
||||
|
||||
// decompilers
|
||||
implementation ('net.fabricmc:procyon-fabric-compilertools:0.5.35.+')
|
||||
|
|
|
@ -30,7 +30,6 @@ import java.util.HashSet;
|
|||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import groovy.util.Node;
|
||||
|
@ -40,10 +39,7 @@ import org.gradle.api.Task;
|
|||
import org.gradle.api.UnknownTaskException;
|
||||
import org.gradle.api.artifacts.Configuration;
|
||||
import org.gradle.api.artifacts.Dependency;
|
||||
import org.gradle.api.artifacts.component.ModuleComponentIdentifier;
|
||||
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
|
||||
import org.gradle.api.artifacts.result.DependencyResult;
|
||||
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;
|
||||
|
@ -199,8 +195,8 @@ public class AbstractPlugin implements Plugin<Project> {
|
|||
* Permit to add a Maven repository to a target project.
|
||||
*
|
||||
* @param target The garget project
|
||||
* @param name The name of the repository
|
||||
* @param url The URL of the repository
|
||||
* @param name The name of the repository
|
||||
* @param url The URL of the repository
|
||||
* @return An object containing the name and the URL of the repository that can be modified later
|
||||
*/
|
||||
public MavenArtifactRepository addMavenRepo(Project target, final String name, final String url) {
|
||||
|
@ -226,42 +222,6 @@ 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());
|
||||
String moduleId = mci.getGroup() + ":" + mci.getModule() + ":" + mci.getVersion();
|
||||
proj.getDependencies().add(configuration, proj.getDependencies().module(moduleId));
|
||||
proj.getLogger().debug("Loom addModule " + moduleId + " to " + configuration);
|
||||
}
|
||||
|
||||
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.
|
||||
*/
|
||||
|
@ -275,21 +235,7 @@ public class AbstractPlugin implements Plugin<Project> {
|
|||
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.getDependencies().add(JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME, "net.fabricmc:fabric-mixin-compile-extensions:" + Constants.MIXIN_COMPILE_EXTENSIONS_VERSION);
|
||||
|
||||
project.afterEvaluate(project1 -> {
|
||||
LoomGradleExtension extension = project1.getExtensions().getByType(LoomGradleExtension.class);
|
||||
|
|
|
@ -39,9 +39,13 @@ public class Constants {
|
|||
|
||||
public static final String MOD_COMPILE_CLASSPATH = "modCompileClasspath";
|
||||
public static final String MOD_COMPILE_CLASSPATH_MAPPED = "modCompileClasspathMapped";
|
||||
public static final List<RemappedConfigurationEntry> MOD_COMPILE_ENTRIES = ImmutableList.of(new RemappedConfigurationEntry("modCompile", "compile", true, "compile"), new RemappedConfigurationEntry("modApi", "api", true, "compile"),
|
||||
new RemappedConfigurationEntry("modImplementation", "implementation", true, "runtime"), new RemappedConfigurationEntry("modRuntime", "runtimeOnly", false, ""),
|
||||
new RemappedConfigurationEntry("modCompileOnly", "compileOnly", true, ""));
|
||||
public static final List<RemappedConfigurationEntry> MOD_COMPILE_ENTRIES = ImmutableList.of(
|
||||
new RemappedConfigurationEntry("modCompile", "compile", true, "compile"),
|
||||
new RemappedConfigurationEntry("modApi", "api", true, "compile"),
|
||||
new RemappedConfigurationEntry("modImplementation", "implementation", true, "runtime"),
|
||||
new RemappedConfigurationEntry("modRuntime", "runtimeOnly", false, ""),
|
||||
new RemappedConfigurationEntry("modCompileOnly", "compileOnly", true, "")
|
||||
);
|
||||
|
||||
public static final String INCLUDE = "include";
|
||||
public static final String MINECRAFT = "minecraft";
|
||||
|
@ -51,4 +55,6 @@ public class Constants {
|
|||
public static final String MINECRAFT_LINEMAPPED = "minecraftLinemapped";
|
||||
public static final String MAPPINGS = "mappings";
|
||||
public static final String MAPPINGS_FINAL = "mappingsFinal";
|
||||
|
||||
public static final String MIXIN_COMPILE_EXTENSIONS_VERSION = "0.2.0.3";
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue