From 50fbfa6f4b8249beda2d803f85990a8436ae7318 Mon Sep 17 00:00:00 2001
From: Josiah Noel <32279667+SentryMan@users.noreply.github.com>
Date: Sat, 12 Jul 2025 23:04:17 -0400
Subject: [PATCH 1/2] `@PluginProvides` Annotation with maven plugin
now will read the plugin provides annotation values with the maven/gradle plugin
---
.../io/avaje/inject/plugin/AvajeInjectPlugin.java | 12 ++++++++++++
.../io/avaje/inject/mojo/AutoProvidesMojo.java | 15 +++++++++++++++
2 files changed, 27 insertions(+)
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..ffb62478c 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,18 @@ 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..ac3908f67 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,18 @@ 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);
}
From 27da065e669ab6ccb0564f6ae3e4964096688b84 Mon Sep 17 00:00:00 2001
From: Rob Bygrave
Date: Mon, 14 Jul 2025 08:02:45 +1200
Subject: [PATCH 2/2] Format only
---
.../inject/plugin/AvajeInjectPlugin.java | 21 +++++++++----------
.../avaje/inject/mojo/AutoProvidesMojo.java | 21 +++++++++----------
2 files changed, 20 insertions(+), 22 deletions(-)
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 ffb62478c..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
@@ -81,17 +81,16 @@ private void writeProvidedPlugins(ClassLoader classLoader, FileWriter pluginWrit
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();
- });
+ .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 ac3908f67..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
@@ -117,17 +117,16 @@ private void writeProvidedPlugins(URLClassLoader newClassLoader, FileWriter plug
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();
- });
+ .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);
}