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);
}