This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/main by this push:
     new 6b10d2869f99 CAMEL-23157: Allow plugins to contribute dependencies to 
the Run command (#21888)
6b10d2869f99 is described below

commit 6b10d2869f99652ccdaaae6f4cfaac30cdafc645
Author: Federico Mariani <[email protected]>
AuthorDate: Tue Mar 10 07:36:54 2026 +0100

    CAMEL-23157: Allow plugins to contribute dependencies to the Run command 
(#21888)
---
 .../org/apache/camel/dsl/jbang/core/commands/Run.java | 19 ++++++++++++++++++-
 .../camel/dsl/jbang/core/common/PluginHelper.java     |  6 +++---
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index 6614df67c1c6..87b2c2a13d80 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -45,6 +45,9 @@ import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
 import org.apache.camel.dsl.jbang.core.common.LauncherHelper;
 import org.apache.camel.dsl.jbang.core.common.LoggingLevelCompletionCandidates;
+import org.apache.camel.dsl.jbang.core.common.Plugin;
+import org.apache.camel.dsl.jbang.core.common.PluginExporter;
+import org.apache.camel.dsl.jbang.core.common.PluginHelper;
 import org.apache.camel.dsl.jbang.core.common.Printer;
 import org.apache.camel.dsl.jbang.core.common.PropertyResolver;
 import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
@@ -362,7 +365,7 @@ public class Run extends CamelCommand {
     boolean prompt;
 
     @Option(names = { "--skip-plugins" }, defaultValue = "false",
-            description = "Skip plugins during export")
+            description = "Skip resolving plugin dependencies")
     boolean skipPlugins;
 
     public Run(CamelJBangMain main) {
@@ -986,6 +989,20 @@ public class Run extends CamelCommand {
         // Add runtime-specific dependencies
         addRuntimeSpecificDependenciesFromProperties(profileProperties);
 
+        // Add plugin dependencies
+        if (!skipPlugins) {
+            Set<PluginExporter> exporters = 
PluginHelper.getActivePlugins(getMain(), repositories).values()
+                    .stream()
+                    .map(Plugin::getExporter)
+                    .filter(Optional::isPresent)
+                    .map(Optional::get)
+                    .collect(Collectors.toSet());
+
+            for (PluginExporter exporter : exporters) {
+                
addDependencies(exporter.getDependencies(runtime).toArray(String[]::new));
+            }
+        }
+
         if (observe) {
             dependencies.add("camel:observability-services");
         }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PluginHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PluginHelper.java
index b212b647e21d..3263d7138c2a 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PluginHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PluginHelper.java
@@ -183,7 +183,7 @@ public final class PluginHelper {
             final String group = extractGroup(mavenGav, "org.apache.camel");
             final String depVersion = extractVersion(mavenGav, defaultVersion);
 
-            plugin = downloadPlugin(name, depVersion, group, repos, printer);
+            plugin = downloadPlugin(name, defaultVersion, depVersion, group, 
repos, printer);
         }
 
         return plugin;
@@ -212,7 +212,7 @@ public final class PluginHelper {
     }
 
     private static Optional<Plugin> downloadPlugin(
-            String command, String version, String group, String repos, 
Printer printer) {
+            String command, String camelVersion, String version, String group, 
String repos, Printer printer) {
         DependencyDownloader downloader = new MavenDependencyDownloader();
         DependencyDownloaderClassLoader ddlcl = new 
DependencyDownloaderClassLoader(PluginHelper.class.getClassLoader());
         downloader.setClassLoader(ddlcl);
@@ -221,7 +221,7 @@ public final class PluginHelper {
         }
         downloader.start();
         // downloads and adds to the classpath
-        
downloader.downloadDependencyWithParent("org.apache.camel:camel-jbang-parent:" 
+ version, group,
+        
downloader.downloadDependencyWithParent("org.apache.camel:camel-jbang-parent:pom:"
 + camelVersion, group,
                 "camel-jbang-plugin-" + command, version);
         Optional<Plugin> instance = Optional.empty();
         InputStream in = null;

Reply via email to