diff --git a/inject-gradle-plugin/src/main/java/io/avaje/inject/plugin/AvajeInjectPlugin.java b/inject-gradle-plugin/src/main/java/io/avaje/inject/plugin/AvajeInjectPlugin.java index 8fa751ab8..440383809 100644 --- a/inject-gradle-plugin/src/main/java/io/avaje/inject/plugin/AvajeInjectPlugin.java +++ b/inject-gradle-plugin/src/main/java/io/avaje/inject/plugin/AvajeInjectPlugin.java @@ -80,6 +80,17 @@ private void writeProvidedPlugins(ClassLoader classLoader, FileWriter pluginWrit for (final var provide : plugin.providesAspects()) { provides.add(wrapAspect(provide.getCanonicalName())); } + Optional.ofNullable(plugin.getClass().getAnnotation(PluginProvides.class)) + .ifPresent(p -> { + for (final var provide : p.value()) { + provides.add(provide.getTypeName()); + } + Collections.addAll(provides, p.providesStrings()); + for (final var provide : p.providesAspects()) { + provides.add(wrapAspect(provide.getCanonicalName())); + } + p.providesStrings(); + }); pluginEntries.put(typeName, provides); } diff --git a/inject-maven-plugin/src/main/java/io/avaje/inject/mojo/AutoProvidesMojo.java b/inject-maven-plugin/src/main/java/io/avaje/inject/mojo/AutoProvidesMojo.java index 2f15349e0..f6769e463 100644 --- a/inject-maven-plugin/src/main/java/io/avaje/inject/mojo/AutoProvidesMojo.java +++ b/inject-maven-plugin/src/main/java/io/avaje/inject/mojo/AutoProvidesMojo.java @@ -11,9 +11,11 @@ import java.net.URLClassLoader; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.ServiceLoader; import java.util.ServiceLoader.Provider; @@ -31,6 +33,7 @@ import io.avaje.inject.spi.AvajeModule; import io.avaje.inject.spi.InjectExtension; import io.avaje.inject.spi.InjectPlugin; +import io.avaje.inject.spi.PluginProvides; /** * Plugin that generates target/avaje-module-provides.txt and @@ -113,6 +116,17 @@ private void writeProvidedPlugins(URLClassLoader newClassLoader, FileWriter plug for (final var provide : plugin.providesAspects()) { provides.add(wrapAspect(provide.getCanonicalName())); } + Optional.ofNullable(plugin.getClass().getAnnotation(PluginProvides.class)) + .ifPresent(p -> { + for (final var provide : p.value()) { + provides.add(provide.getTypeName()); + } + Collections.addAll(provides, p.providesStrings()); + for (final var provide : p.providesAspects()) { + provides.add(wrapAspect(provide.getCanonicalName())); + } + p.providesStrings(); + }); pluginEntries.put(typeName, provides); }