Skip to content

Commit bb5e654

Browse files
committed
Gradle 8.9 Closes #13
1 parent dbda891 commit bb5e654

File tree

2 files changed

+29
-7
lines changed

2 files changed

+29
-7
lines changed

build.gradle

+18-2
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import net.minecraftforge.artifactural.buildscript.JarTransformationTask
22
import net.minecraftforge.artifactural.buildscript.SoftwareComponentFactoryGrabber
33
import org.objectweb.asm.Label
44
import org.objectweb.asm.Opcodes
5-
import org.objectweb.asm.tree.InsnNode
6-
import org.objectweb.asm.tree.MethodInsnNode
5+
import org.objectweb.asm.tree.*
76

87
plugins {
98
id 'java-library'
@@ -88,6 +87,23 @@ tasks.register('transformJar', JarTransformationTask) {
8887
}
8988

9089
addTransformer('net/minecraftforge/artifactural/gradle/GradleRepositoryAdapter$1$1') { clazz ->
90+
// Gradle [8.9) - resolveArtifactsWithType changed parameter types
91+
{
92+
final mtd = 'resolveArtifactsWithType'
93+
final desc = '(Lorg/gradle/internal/component/model/ComponentArtifactResolveMetadata;Lorg/gradle/api/internal/component/ArtifactType;Lorg/gradle/internal/resolve/result/BuildableArtifactSetResolveResult;)V'
94+
clazz.methods.find { it.name == mtd && it.desc == desc }.tap {
95+
96+
// null -> first parameter
97+
final aconst_null = it.instructions.find { it.opcode == Opcodes.ACONST_NULL }
98+
it.instructions.insertBefore(aconst_null, new VarInsnNode(Opcodes.ALOAD, 1))
99+
it.instructions.remove(aconst_null)
100+
101+
// Change target desc
102+
final invoke = it.instructions.find { it instanceof MethodInsnNode && it.name == mtd }
103+
invoke.desc = desc
104+
}
105+
}
106+
91107
// Gradle [???,8.2)
92108
{
93109
clazz.methods.find {

src/gradlecomp/java/net/minecraftforge/artifactural/gradle/GradleRepositoryAdapter.java

+11-5
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@
5353
import org.gradle.internal.component.external.model.ModuleDependencyMetadata;
5454
import org.gradle.internal.component.external.model.MutableModuleComponentResolveMetadata;
5555
import org.gradle.internal.component.model.ComponentArtifactMetadata;
56+
import org.gradle.internal.component.model.ComponentArtifactResolveMetadata;
5657
import org.gradle.internal.component.model.ComponentOverrideMetadata;
5758
import org.gradle.internal.component.model.ComponentResolveMetadata;
5859
import org.gradle.internal.component.model.ModuleSources;
@@ -160,6 +161,7 @@ public String getDisplayName() {
160161
}
161162

162163
@Override
164+
@SuppressWarnings({"rawtypes", "unchecked"})
163165
public ConfiguredModuleComponentRepository createResolver() {
164166
MavenResolver resolver = (MavenResolver)local.createResolver();
165167

@@ -176,7 +178,6 @@ public ConfiguredModuleComponentRepository createResolver() {
176178
ReflectionUtils.alter(resolver, "cachingResourceAccessor.this$0.repository", prev -> repo);
177179
ReflectionUtils.alter(resolver, "cachingResourceAccessor.delegate.delegate", prev -> repo);
178180

179-
//noinspection unchecked,rawtypes
180181
return new ConfiguredModuleComponentRepository() {
181182
private final ModuleComponentRepositoryAccess local = wrap(resolver.getLocalAccess());
182183
private final ModuleComponentRepositoryAccess remote = wrap(resolver.getRemoteAccess());
@@ -197,11 +198,9 @@ public Instantiator getComponentMetadataInstantiator() {
197198
}
198199

199200
private ModuleComponentRepositoryAccess wrap(ModuleComponentRepositoryAccess delegate) {
200-
//noinspection rawtypes
201201
return new ModuleComponentRepositoryAccess() {
202202
@Override
203203
public void resolveComponentMetaData(ModuleComponentIdentifier moduleComponentIdentifier, ComponentOverrideMetadata requestMetaData, BuildableModuleComponentMetaDataResolveResult result) {
204-
//noinspection unchecked
205204
delegate.resolveComponentMetaData(moduleComponentIdentifier, requestMetaData, result);
206205
if (result.getState() == BuildableModuleComponentMetaDataResolveResult.State.Resolved) {
207206
ModuleComponentResolveMetadata meta = getMetadata(result);
@@ -222,14 +221,12 @@ private void setResultResolved(BuildableModuleComponentMetaDataResolveResult res
222221
}
223222
}
224223

225-
@SuppressWarnings("unchecked")
226224
private void setResultResolvedGradle8_2Above(BuildableModuleComponentMetaDataResolveResult result, ModuleComponentResolveMetadata meta) {
227225
result.resolved(meta);
228226
}
229227

230228
// DO NOT TOUCH
231229
// This method is modified by ASM in build.gradle
232-
@SuppressWarnings("unchecked")
233230
private void setResultResolvedGradle8_1Below(BuildableModuleComponentMetaDataResolveResult result, ModuleComponentResolveMetadata meta) {
234231
// Descriptor of resolved is changed to (Lorg/gradle/internal/component/external/model/ModuleComponentResolveMetadata;)V
235232
result.resolved(meta);
@@ -264,6 +261,15 @@ public void resolveArtifactsWithType(ComponentResolveMetadata component, Artifac
264261
delegate.resolveArtifactsWithType(component, artifactType, result);
265262
}
266263

264+
// DO NOT TOUCH
265+
// Gradle 8.9 changed the first argument from ComponentResolveMetadata to ComponentArtifactResolveMetadata
266+
// https://github.com/gradle/gradle/commit/90f772b5d4b5599653d435e9f10d364a5599608d
267+
@SuppressWarnings("unused")
268+
public void resolveArtifactsWithType(ComponentArtifactResolveMetadata component, ArtifactType artifactType, BuildableArtifactSetResolveResult result) {
269+
//ASM In build.gradle changes the first parameter and method descriptor
270+
delegate.resolveArtifactsWithType(null/*component*/, artifactType, result);
271+
}
272+
267273
@Override
268274
public void resolveArtifact(ComponentArtifactMetadata componentArtifactMetadata, ModuleSources moduleSources, BuildableArtifactFileResolveResult buildableArtifactFileResolveResult) {
269275
delegate.resolveArtifact(componentArtifactMetadata, moduleSources, buildableArtifactFileResolveResult);

0 commit comments

Comments
 (0)