From 0940e170dc45b4624aa2ae69bf02372622bd742b Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 13 Jun 2025 11:36:50 +0200 Subject: [PATCH] [jOOQ/jOOQ#18586] Ad-hoc compilation of code generator shouldn't require adding jooq-codegen dependency to project, explicitly --- .../main/java/org/jooq/codegen/maven/Plugin.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/jOOQ-codegen-maven/src/main/java/org/jooq/codegen/maven/Plugin.java b/jOOQ-codegen-maven/src/main/java/org/jooq/codegen/maven/Plugin.java index 1c99045822..f14d1517a1 100644 --- a/jOOQ-codegen-maven/src/main/java/org/jooq/codegen/maven/Plugin.java +++ b/jOOQ-codegen-maven/src/main/java/org/jooq/codegen/maven/Plugin.java @@ -57,6 +57,7 @@ import org.jooq.util.jaxb.tools.MiniJAXB; import org.apache.maven.model.PluginExecution; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; @@ -286,12 +287,19 @@ public class Plugin extends AbstractMojo { private URLClassLoader getClassLoader() throws MojoExecutionException { try { List classpathElements = project.getRuntimeClasspathElements(); - URL urls[] = new URL[classpathElements.size()]; + List urls = new ArrayList<>(); - for (int i = 0; i < urls.length; i++) - urls[i] = new File(classpathElements.get(i)).toURI().toURL(); + // [#18586] Re-add also plugin dependencies to the plugin class path, explicitly. + // E.g. when passing the URL list to the in-memory compilation utility. + PluginDescriptor d = (PluginDescriptor) getPluginContext().get("pluginDescriptor"); + if (d != null) + for (URL u : d.getClassRealm().getURLs()) + urls.add(u); - return new URLClassLoader(urls, getClass().getClassLoader()); + for (String e : classpathElements) + urls.add(new File(e).toURI().toURL()); + + return new URLClassLoader(urls.toArray(new URL[0]), getClass().getClassLoader()); } catch (Exception e) { throw new MojoExecutionException("Couldn't create a classloader.", e);