From 98bb6cd72575b50f0c7afe6ec3c376dc9dcb9c66 Mon Sep 17 00:00:00 2001 From: Rafael Winterhalter Date: Wed, 21 Aug 2024 20:42:22 +0200 Subject: [PATCH] Make build work again. --- .../ByteBuddyAndroidTaskExtension.java | 28 +++++++++++++++++++ .../ByteBuddyLocalClassesEnhancerTask.java | 13 ++++++++- .../build/gradle/AbstractByteBuddyTask.java | 4 +-- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/byte-buddy-gradle-plugin/android-plugin/src/main/java/net/bytebuddy/build/gradle/android/ByteBuddyAndroidTaskExtension.java b/byte-buddy-gradle-plugin/android-plugin/src/main/java/net/bytebuddy/build/gradle/android/ByteBuddyAndroidTaskExtension.java index 4dbcfd5b99..d1da357bbc 100644 --- a/byte-buddy-gradle-plugin/android-plugin/src/main/java/net/bytebuddy/build/gradle/android/ByteBuddyAndroidTaskExtension.java +++ b/byte-buddy-gradle-plugin/android-plugin/src/main/java/net/bytebuddy/build/gradle/android/ByteBuddyAndroidTaskExtension.java @@ -17,8 +17,10 @@ import groovy.lang.Closure; import net.bytebuddy.build.EntryPoint; +import net.bytebuddy.utility.nullability.MaybeNull; import org.gradle.api.Action; import org.gradle.api.Project; +import org.gradle.api.file.FileCollection; import java.util.ArrayList; import java.util.List; @@ -81,6 +83,12 @@ public class ByteBuddyAndroidTaskExtension { */ private int threads; + /** + * A set of classes that is used for discovery of plugins. + */ + @MaybeNull + private FileCollection discoverySet; + /** * Creates a new abstract Byte Buddy task extension. * @@ -270,6 +278,25 @@ public void setThreads(int threads) { this.threads = threads; } + /** + * Returns the source set to resolve plugin names from or {@code null} if no such source set is used. + * + * @return The source set to resolve plugin names from or {@code null} if no such source set is used. + */ + @MaybeNull + public FileCollection getDiscoverySet() { + return discoverySet; + } + + /** + * Defines the source set to resolve plugin names from or {@code null} if no such source set is used. + * + * @param discoverySet The source set to resolve plugin names from or {@code null} if no such source set is used. + */ + public void setDiscoverySet(@MaybeNull FileCollection discoverySet) { + this.discoverySet = discoverySet; + } + /** * Applies this extension's properties. * @@ -285,5 +312,6 @@ protected void configure(ByteBuddyLocalClassesEnhancerTask task) { task.getExtendedParsing().convention(isExtendedParsing()); task.getDiscovery().convention(getDiscovery()); task.getThreads().convention(getThreads()); + task.getDiscoverySet().setFrom(getDiscoverySet()); } } diff --git a/byte-buddy-gradle-plugin/android-plugin/src/main/java/net/bytebuddy/build/gradle/android/ByteBuddyLocalClassesEnhancerTask.java b/byte-buddy-gradle-plugin/android-plugin/src/main/java/net/bytebuddy/build/gradle/android/ByteBuddyLocalClassesEnhancerTask.java index fdc89c8a99..0edee42c4e 100644 --- a/byte-buddy-gradle-plugin/android-plugin/src/main/java/net/bytebuddy/build/gradle/android/ByteBuddyLocalClassesEnhancerTask.java +++ b/byte-buddy-gradle-plugin/android-plugin/src/main/java/net/bytebuddy/build/gradle/android/ByteBuddyLocalClassesEnhancerTask.java @@ -34,6 +34,7 @@ import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.Property; import org.gradle.api.tasks.*; +import org.gradle.api.tasks.Optional; import java.io.*; import java.lang.reflect.InvocationTargetException; @@ -167,6 +168,16 @@ public abstract class ByteBuddyLocalClassesEnhancerTask extends DefaultTask { @Input public abstract Property getExtendedParsing(); + /** + * Returns the source set to resolve plugin names from or {@code null} if no such source set is used. + * + * @return The source set to resolve plugin names from or {@code null} if no such source set is used. + */ + @MaybeNull + @InputFiles + @Optional + public abstract ConfigurableFileCollection getDiscoverySet(); + /** * Translates a collection of files to {@link URL}s. * @@ -239,7 +250,7 @@ public void execute() throws IOException { discovery.getMethod("valueOf", String.class).invoke(null, getDiscovery().get().name()), ClassFileLocator.ForClassLoader.of(ByteBuddy.class.getClassLoader()), getAndroidBootClasspath().plus(getByteBuddyClasspath()).getFiles(), - Collections.emptyList(), // TODO + getDiscoverySet().getFiles(), getEntryPoint().get(), classFileVersion, Plugin.Factory.UsingReflection.ArgumentResolver.ForType.of(AndroidDescriptor.class, androidDescriptor), diff --git a/byte-buddy-gradle-plugin/src/main/java/net/bytebuddy/build/gradle/AbstractByteBuddyTask.java b/byte-buddy-gradle-plugin/src/main/java/net/bytebuddy/build/gradle/AbstractByteBuddyTask.java index b28a988657..5dd46b02fa 100644 --- a/byte-buddy-gradle-plugin/src/main/java/net/bytebuddy/build/gradle/AbstractByteBuddyTask.java +++ b/byte-buddy-gradle-plugin/src/main/java/net/bytebuddy/build/gradle/AbstractByteBuddyTask.java @@ -417,7 +417,7 @@ public static void apply(Logger logger, Discovery discovery, ClassFileLocator rootLocator, Iterable artifacts, - Iterable discoveries, + @MaybeNull Iterable discoveries, EntryPoint entryPoint, ClassFileVersion classFileVersion, Plugin.Factory.UsingReflection.ArgumentResolver rootLocationResolver, @@ -429,8 +429,8 @@ public static void apply(Logger logger, boolean warnOnEmptyTypeSet, Plugin.Engine.Source source, Plugin.Engine.Target target) throws IOException { - ClassLoader classLoader = ByteBuddySkippingUrlClassLoader.of(rootLoader, discoveries); Plugin.Engine.Summary summary; + ClassLoader classLoader = ByteBuddySkippingUrlClassLoader.of(rootLoader, discoveries); try { if (discovery.isDiscover(transformations)) { Set undiscoverable = new HashSet();