From 841fc5a4dbbb713e7698f45e74104334caa4ba01 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 30 Dec 2020 20:12:33 +0000 Subject: [PATCH] Fix classifier handling for remapped dependencies --- .../loom/build/ModCompileRemapper.java | 14 ++++------ .../dependency/ModDependencyInfo.java | 28 +++++++++++++------ 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/build/ModCompileRemapper.java b/src/main/java/net/fabricmc/loom/build/ModCompileRemapper.java index 5fc7771..8fe879a 100644 --- a/src/main/java/net/fabricmc/loom/build/ModCompileRemapper.java +++ b/src/main/java/net/fabricmc/loom/build/ModCompileRemapper.java @@ -76,14 +76,13 @@ public class ModCompileRemapper { String group = artifact.getModuleVersion().getId().getGroup(); String name = artifact.getModuleVersion().getId().getName(); String version = artifact.getModuleVersion().getId().getVersion(); - String classifierSuffix = artifact.getClassifier() == null ? "" : (":" + artifact.getClassifier()); if (!isFabricMod(logger, artifact)) { addToRegularCompile(project, regularConfig, artifact); continue; } - ModDependencyInfo info = new ModDependencyInfo(group, name, version, classifierSuffix, artifact.getFile(), remappedConfig, remapData); + ModDependencyInfo info = new ModDependencyInfo(group, name, version, artifact.getClassifier(), artifact.getFile(), remappedConfig, remapData); if (refreshDeps) { info.forceRemap(); @@ -91,16 +90,16 @@ public class ModCompileRemapper { modDependencies.add(info); - String remappedLog = group + ":" + name + ":" + version + classifierSuffix + " (" + mappingsSuffix + ")"; + String remappedLog = group + ":" + name + ":" + version + (artifact.getClassifier() == null ? "" : ":" + artifact.getClassifier()) + " (" + mappingsSuffix + ")"; project.getLogger().info(":providing " + remappedLog); - File remappedSources = new File(info.getRemappedOutput().getAbsolutePath().replace(".jar", "-sources.jar")); + File remappedSources = info.getRemappedOutput("sources"); if (!remappedSources.exists() || refreshDeps) { File sources = findSources(dependencies, artifact); if (sources != null) { - scheduleSourcesRemapping(project, sourceRemapper, sources, info.getRemappedNotation(), info.getRemappedOutput(), modStore); + scheduleSourcesRemapping(project, sourceRemapper, sources, info.getRemappedNotation(), remappedSources); } } } @@ -113,7 +112,7 @@ public class ModCompileRemapper { // Add all of the remapped mods onto the config for (ModDependencyInfo info : modDependencies) { - project.getDependencies().add(info.targetConfig.getName(), project.getDependencies().module(info.getRemappedNotation())); + project.getDependencies().add(info.targetConfig.getName(), info.getRemappedNotation()); } } } @@ -165,10 +164,9 @@ public class ModCompileRemapper { return null; } - private static void scheduleSourcesRemapping(Project project, SourceRemapper sourceRemapper, File sources, String remappedLog, File remappedJar, File modStore) { + private static void scheduleSourcesRemapping(Project project, SourceRemapper sourceRemapper, File sources, String remappedLog, File remappedSources) { project.getLogger().debug(":providing " + remappedLog + " sources"); - File remappedSources = new File(remappedJar.getAbsolutePath().replace(".jar", "-sources.jar")); boolean refreshDeps = project.getGradle().getStartParameter().isRefreshDependencies(); if (!remappedSources.exists() || sources.lastModified() <= 0 || sources.lastModified() > remappedSources.lastModified() || refreshDeps) { diff --git a/src/main/java/net/fabricmc/loom/configuration/processors/dependency/ModDependencyInfo.java b/src/main/java/net/fabricmc/loom/configuration/processors/dependency/ModDependencyInfo.java index 1f6682f..3472005 100644 --- a/src/main/java/net/fabricmc/loom/configuration/processors/dependency/ModDependencyInfo.java +++ b/src/main/java/net/fabricmc/loom/configuration/processors/dependency/ModDependencyInfo.java @@ -36,6 +36,7 @@ import com.google.gson.JsonObject; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.gradle.api.artifacts.Configuration; +import org.jetbrains.annotations.Nullable; import net.fabricmc.loom.LoomGradlePlugin; @@ -43,6 +44,7 @@ public class ModDependencyInfo { private final String group; public final String name; public final String version; + @Nullable public final String classifier; public final File inputFile; public final Configuration targetConfig; @@ -51,7 +53,7 @@ public class ModDependencyInfo { private boolean forceRemap = false; - public ModDependencyInfo(String group, String name, String version, String classifier, File inputFile, Configuration targetConfig, RemapData remapData) { + public ModDependencyInfo(String group, String name, String version, @Nullable String classifier, File inputFile, Configuration targetConfig, RemapData remapData) { this.group = group; this.name = name; this.version = version; @@ -62,31 +64,35 @@ public class ModDependencyInfo { } public String getRemappedNotation() { - if (classifier == null || classifier.isEmpty()) { + if (!hasClassifier()) { return String.format("%s:%s:%s", getGroup(), name, version); } return String.format("%s:%s:%s:%s", getGroup(), name, version, classifier); } - private String getRemappedFilename() { - if (classifier == null || classifier.isEmpty()) { + public String getRemappedFilename(boolean withClassifier) { + if (!hasClassifier() || !withClassifier) { return String.format("%s-%s", name, version); } - return String.format("%s-%s@%s", name, version, classifier.replace(':', '-')); + return String.format("%s-%s-%s", name, version, classifier); } - private File getRemappedDir() { + public File getRemappedDir() { return new File(remapData.modStore, String.format("%s/%s/%s", getGroup().replace(".", "/"), name, version)); } public File getRemappedOutput() { - return new File(getRemappedDir(), getRemappedFilename() + ".jar"); + return new File(getRemappedDir(), getRemappedFilename(true) + ".jar"); + } + + public File getRemappedOutput(String classifier) { + return new File(getRemappedDir(), getRemappedFilename(false) + "-" + classifier + ".jar"); } private File getRemappedPom() { - return new File(getRemappedOutput().getAbsolutePath().replace(".jar", ".pom")); + return new File(getRemappedDir(), String.format("%s-%s", name, version) + ".pom"); } private String getGroup() { @@ -135,7 +141,11 @@ public class ModDependencyInfo { @Override public String toString() { - return String.format("%s:%s:%s:%s", group, name, version, classifier); + return getRemappedNotation(); + } + + public boolean hasClassifier() { + return classifier != null && !classifier.isEmpty(); } public String getAccessWidener() throws IOException {