From 409af05b6a8e4193b17da01f578057d478f578a2 Mon Sep 17 00:00:00 2001 From: CursedFlames <18627001+CursedFlames@users.noreply.github.com> Date: Fri, 6 Jun 2025 00:08:20 +1200 Subject: [PATCH] Fix DependencyUtils failing to infer artifact classifier under some circumstances --- .../internal/utils/DependencyUtils.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/neoforged/moddevgradle/internal/utils/DependencyUtils.java b/src/main/java/net/neoforged/moddevgradle/internal/utils/DependencyUtils.java index 44231e95..d5a250ce 100644 --- a/src/main/java/net/neoforged/moddevgradle/internal/utils/DependencyUtils.java +++ b/src/main/java/net/neoforged/moddevgradle/internal/utils/DependencyUtils.java @@ -1,7 +1,7 @@ package net.neoforged.moddevgradle.internal.utils; +import org.gradle.api.artifacts.component.ModuleComponentIdentifier; import org.gradle.api.artifacts.result.ResolvedArtifactResult; -import org.gradle.internal.component.external.model.ModuleComponentArtifactIdentifier; import org.jetbrains.annotations.ApiStatus; @ApiStatus.Internal @@ -23,15 +23,15 @@ public static String guessMavenGav(ResolvedArtifactResult result) { filename = filename.substring(0, startOfExt); } - if (result.getId() instanceof ModuleComponentArtifactIdentifier moduleId) { - var artifact = moduleId.getComponentIdentifier().getModule(); - var version = moduleId.getComponentIdentifier().getVersion(); + if (result.getId().getComponentIdentifier() instanceof ModuleComponentIdentifier moduleId) { + var artifact = moduleId.getModule(); + var version = moduleId.getVersion(); var expectedBasename = artifact + "-" + version; if (filename.startsWith(expectedBasename + "-")) { classifier = filename.substring((expectedBasename + "-").length()); } - artifactId = moduleId.getComponentIdentifier().getGroup() + ":" + artifact + ":" + version; + artifactId = moduleId.getGroup() + ":" + artifact + ":" + version; } else { // When we encounter a project reference, the component identifier does not expose the group or module name. // But we can access the list of capabilities associated with the published variant the artifact originates from. @@ -40,7 +40,14 @@ public static String guessMavenGav(ResolvedArtifactResult result) { var capabilities = result.getVariant().getCapabilities(); if (capabilities.size() == 1) { var capability = capabilities.get(0); - artifactId = capability.getGroup() + ":" + capability.getName() + ":" + capability.getVersion(); + var artifact = capability.getName(); + var version = capability.getVersion(); + var expectedBasename = artifact + "-" + version; + + if (filename.startsWith(expectedBasename + "-")) { + classifier = filename.substring((expectedBasename + "-").length()); + } + artifactId = capability.getGroup() + ":" + artifact + ":" + version; } else { artifactId = result.getId().getComponentIdentifier().toString(); }