From e67aa443b8ba22e5cf49032b11fe5129140333f0 Mon Sep 17 00:00:00 2001 From: FlorianMichael Date: Fri, 28 Feb 2025 21:15:58 +0100 Subject: [PATCH] Add Gradle 8.13 support --- build.gradle | 17 +++++++++++++++++ .../gradle/GradleRepositoryAdapter.java | 9 +++++++++ 2 files changed, 26 insertions(+) diff --git a/build.gradle b/build.gradle index 512d850..4bf9a5d 100644 --- a/build.gradle +++ b/build.gradle @@ -87,6 +87,23 @@ tasks.register('transformJar', JarTransformationTask) { } addTransformer('net/minecraftforge/artifactural/gradle/GradleRepositoryAdapter$1$1') { clazz -> + // Gradle [8.13) - listModuleVersions add delegate call + { + final mtd = 'listModuleVersions' + final desc = '(Lorg/gradle/api/artifacts/component/ModuleComponentSelector;Lorg/gradle/internal/component/model/ComponentOverrideMetadata;Lorg/gradle/internal/resolve/result/BuildableModuleVersionListingResolveResult;)V' + + clazz.methods.find { it.name == mtd && it.desc == desc }?.tap { + it.instructions.clear() + it.instructions.add(new VarInsnNode(Opcodes.ALOAD, 0)) + it.instructions.add(new FieldInsnNode(Opcodes.GETFIELD, 'net/minecraftforge/artifactural/gradle/GradleRepositoryAdapter$1$1', 'val$delegate', 'Lorg/gradle/api/internal/artifacts/ivyservice/ivyresolve/ModuleComponentRepositoryAccess;')) + it.instructions.add(new VarInsnNode(Opcodes.ALOAD, 1)) + it.instructions.add(new VarInsnNode(Opcodes.ALOAD, 2)) + it.instructions.add(new VarInsnNode(Opcodes.ALOAD, 3)) + it.instructions.add(new MethodInsnNode(Opcodes.INVOKEINTERFACE, 'org/gradle/api/internal/artifacts/ivyservice/ivyresolve/ModuleComponentRepositoryAccess', 'listModuleVersions', '(Lorg/gradle/api/artifacts/component/ModuleComponentSelector;Lorg/gradle/internal/component/model/ComponentOverrideMetadata;Lorg/gradle/internal/resolve/result/BuildableModuleVersionListingResolveResult;)V')) + it.instructions.add(new InsnNode(Opcodes.RETURN)) + } + } + // Gradle [8.9) - resolveArtifactsWithType changed parameter types { final mtd = 'resolveArtifactsWithType' diff --git a/src/gradlecomp/java/net/minecraftforge/artifactural/gradle/GradleRepositoryAdapter.java b/src/gradlecomp/java/net/minecraftforge/artifactural/gradle/GradleRepositoryAdapter.java index a0a74e5..cc09ae5 100644 --- a/src/gradlecomp/java/net/minecraftforge/artifactural/gradle/GradleRepositoryAdapter.java +++ b/src/gradlecomp/java/net/minecraftforge/artifactural/gradle/GradleRepositoryAdapter.java @@ -29,6 +29,7 @@ import org.gradle.api.artifacts.ComponentMetadataSupplierDetails; import org.gradle.api.artifacts.component.ComponentArtifactIdentifier; import org.gradle.api.artifacts.component.ModuleComponentIdentifier; +import org.gradle.api.artifacts.component.ModuleComponentSelector; import org.gradle.api.artifacts.dsl.RepositoryHandler; import org.gradle.api.internal.artifacts.BaseRepositoryFactory; import org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ComponentResolvers; @@ -256,6 +257,14 @@ public void listModuleVersions(ModuleDependencyMetadata dependency, BuildableMod delegate.listModuleVersions(dependency, result); } + // DO NOT TOUCH + // Gradle 8.13 changed the first argument from ModuleDependencyMetadata to ModuleComponentSelector and added a new argument ComponentOverrideMetadata + // https://github.com/gradle/gradle/commit/7f120d813df21b0d24f403180629f51ba0f8ee4c + @SuppressWarnings("unused") + public void listModuleVersions(ModuleComponentSelector selector, ComponentOverrideMetadata overrideMetadata, BuildableModuleVersionListingResolveResult result) { + //ASM in build.gradle adds the delegate call + } + @Override public void resolveArtifactsWithType(ComponentResolveMetadata component, ArtifactType artifactType, BuildableArtifactSetResolveResult result) { delegate.resolveArtifactsWithType(component, artifactType, result);