This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-4.18.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-4.18.x by this push:
new d69535ed14cf Fix camel export to auto-detect kamelets version from
classpath (#23783)
d69535ed14cf is described below
commit d69535ed14cfe4623cc80a1ffb80ff49111a61e4
Author: Salvatore Mongiardo <[email protected]>
AuthorDate: Mon Jun 8 19:34:51 2026 +0200
Fix camel export to auto-detect kamelets version from classpath (#23783)
The --kamelets-version option was hardcoded to a compile-time default
from parent/pom.xml in ExportBaseCommand, CatalogKamelet, CatalogDoc,
and KameletTools. When the actual kamelets jar on the classpath has a
different version (e.g. in productized builds), wrong version is used.
Remove the compile-time defaults and let
VersionHelper.extractKameletsVersion()
detect the actual version from the classpath at runtime, falling back to the
compiled-in default only when no kamelets jar is found.
---
.../jbang-commands/camel-jbang-catalog-kamelet.adoc | 2 +-
.../ROOT/pages/jbang-commands/camel-jbang-debug.adoc | 2 +-
.../jbang-commands/camel-jbang-dependency-copy.adoc | 2 +-
.../jbang-commands/camel-jbang-dependency-list.adoc | 2 +-
.../jbang-commands/camel-jbang-dependency-update.adoc | 2 +-
.../ROOT/pages/jbang-commands/camel-jbang-doc.adoc | 2 +-
.../ROOT/pages/jbang-commands/camel-jbang-export.adoc | 2 +-
.../ROOT/pages/jbang-commands/camel-jbang-init.adoc | 2 +-
.../ROOT/pages/jbang-commands/camel-jbang-run.adoc | 2 +-
.../ROOT/pages/jbang-commands/camel-jbang-sbom.adoc | 2 +-
.../META-INF/camel-jbang-commands-metadata.json | 16 ++++++++--------
.../camel/dsl/jbang/core/commands/ExportBaseCommand.java | 8 +++++---
.../org/apache/camel/dsl/jbang/core/commands/Init.java | 2 +-
.../org/apache/camel/dsl/jbang/core/commands/Run.java | 3 ++-
.../dsl/jbang/core/commands/catalog/CatalogDoc.java | 9 ++++++---
.../dsl/jbang/core/commands/catalog/CatalogKamelet.java | 6 ++----
.../camel/dsl/jbang/core/commands/mcp/KameletTools.java | 6 +++---
17 files changed, 37 insertions(+), 33 deletions(-)
diff --git
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-catalog-kamelet.adoc
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-catalog-kamelet.adoc
index 9ef1464a2b83..838371b055c7 100644
---
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-catalog-kamelet.adoc
+++
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-catalog-kamelet.adoc
@@ -20,7 +20,7 @@ camel catalog kamelet [options]
|===
| Option | Description | Default | Type
| `--filter` | Filter by name or description | | String
-| `--kamelets-version` | Apache Camel Kamelets version |
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from
classpath if not set) | | String
| `--sort` | Sort by name, type, support-level, or description | name | String
| `--type,--filter-type` | Filter by type: source, sink, or action | | String
| `-h,--help` | Display the help and sub-commands | | boolean
diff --git
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-debug.adoc
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-debug.adoc
index 34fd244c266b..c79a70a26a3b 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-debug.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-debug.adoc
@@ -40,7 +40,7 @@ camel debug [options]
| `--jfr` | Enables Java Flight Recorder saving recording to disk on exit |
false | boolean
| `--jfr-profile` | Java Flight Recorder profile to use (such as default or
profile) | | String
| `--jvm-debug` | To enable JVM remote debugging on port 4004 by default. The
supported values are true to enable the remote debugging, false to disable the
remote debugging or a number to use a custom port | | int
-| `--kamelets-version` | Apache Camel Kamelets version | | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from
classpath if not set) | | String
| `--lazy-bean` | Whether to use lazy bean initialization (can help with
complex classloading issues) | false | boolean
| `--local-kamelet-dir` | Local directory (or github link) for loading
Kamelets (takes precedence). Multiple directories can be specified separated by
comma. | | String
| `--log-lines` | Number of log lines to display on top of screen | 10 | int
diff --git
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-copy.adoc
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-copy.adoc
index 7e7946acb321..dd66a3ff2605 100644
---
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-copy.adoc
+++
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-copy.adoc
@@ -36,7 +36,7 @@ camel dependency copy [options]
| `--hawtio-version` | Version of the Hawtio web console |
HawtioVersion.HAWTIO_VERSION | String
| `--ignore-loading-error` | Whether to ignore route loading and compilation
errors (use this with care!) | false | boolean
| `--java-version,--java` | Java version | 21 | String
-| `--kamelets-version` | Apache Camel Kamelets version |
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from
classpath if not set) | | String
| `--lazy-bean` | Whether to use lazy bean initialization (can help with
complex classloading issues | true | boolean
| `--local-kamelet-dir` | Local directory for loading Kamelets (takes
precedence) | | String
| `--logging` | Can be used to turn on logging to console (logs by default to
file in <user home>/.camel directory) | false | boolean
diff --git
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-list.adoc
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-list.adoc
index 49dd4ea9b3c1..72a5d2e0730b 100644
---
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-list.adoc
+++
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-list.adoc
@@ -36,7 +36,7 @@ camel dependency list [options]
| `--hawtio-version` | Version of the Hawtio web console |
HawtioVersion.HAWTIO_VERSION | String
| `--ignore-loading-error` | Whether to ignore route loading and compilation
errors (use this with care!) | false | boolean
| `--java-version,--java` | Java version | 21 | String
-| `--kamelets-version` | Apache Camel Kamelets version |
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from
classpath if not set) | | String
| `--lazy-bean` | Whether to use lazy bean initialization (can help with
complex classloading issues | true | boolean
| `--local-kamelet-dir` | Local directory for loading Kamelets (takes
precedence) | | String
| `--logging` | Can be used to turn on logging to console (logs by default to
file in <user home>/.camel directory) | false | boolean
diff --git
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-update.adoc
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-update.adoc
index cbab948e70b6..f806f900c401 100644
---
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-update.adoc
+++
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-dependency-update.adoc
@@ -37,7 +37,7 @@ camel dependency update [options]
| `--hawtio-version` | Version of the Hawtio web console |
HawtioVersion.HAWTIO_VERSION | String
| `--ignore-loading-error` | Whether to ignore route loading and compilation
errors (use this with care!) | false | boolean
| `--java-version,--java` | Java version | 21 | String
-| `--kamelets-version` | Apache Camel Kamelets version |
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from
classpath if not set) | | String
| `--lazy-bean` | Whether to use lazy bean initialization (can help with
complex classloading issues | true | boolean
| `--local-kamelet-dir` | Local directory for loading Kamelets (takes
precedence) | | String
| `--logging` | Can be used to turn on logging to console (logs by default to
file in <user home>/.camel directory) | false | boolean
diff --git
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-doc.adoc
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-doc.adoc
index 417ac09990dc..050abc8bf66a 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-doc.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-doc.adoc
@@ -23,7 +23,7 @@ camel doc [options]
| `--download` | Whether to allow automatic downloading JAR dependencies (over
the internet) | true | boolean
| `--filter` | Filter option listed in tables by name, description, or group |
| String
| `--header` | Whether to display component message headers | false | boolean
-| `--kamelets-version` | Apache Camel Kamelets version |
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from
classpath if not set) | | String
| `--open-url` | Opens the online documentation form the Camel website in the
web browser | false | boolean
| `--quarkus-group-id` | Quarkus Platform Maven groupId | io.quarkus.platform
| String
| `--quarkus-version` | Quarkus Platform version | RuntimeType.QUARKUS_VERSION
| String
diff --git
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-export.adoc
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-export.adoc
index d2242c50520e..c6a3eda8fd99 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-export.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-export.adoc
@@ -36,7 +36,7 @@ camel export [options]
| `--hawtio-version` | Version of the Hawtio web console |
HawtioVersion.HAWTIO_VERSION | String
| `--ignore-loading-error` | Whether to ignore route loading and compilation
errors (use this with care!) | false | boolean
| `--java-version,--java` | Java version | 21 | String
-| `--kamelets-version` | Apache Camel Kamelets version |
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from
classpath if not set) | | String
| `--lazy-bean` | Whether to use lazy bean initialization (can help with
complex classloading issues | true | boolean
| `--local-kamelet-dir` | Local directory for loading Kamelets (takes
precedence) | | String
| `--logging` | Can be used to turn on logging to console (logs by default to
file in <user home>/.camel directory) | false | boolean
diff --git
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-init.adoc
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-init.adoc
index db8aee77b169..33ef952de2da 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-init.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-init.adoc
@@ -22,7 +22,7 @@ camel init [options]
| `--clean-dir,--clean-directory` | Whether to clean directory first (deletes
all files in directory) | | boolean
| `--dir,--directory` | Directory relative path where the new Camel
integration will be saved | . | String
| `--from-kamelet` | To be used when extending an existing Kamelet | | String
-| `--kamelets-version` | Apache Camel Kamelets version | | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from
classpath if not set) | | String
| `--pipe` | When creating a yaml file should it be created as a Pipe CR | |
boolean
| `--repo,--repos` | Additional maven repositories (Use commas to separate
multiple repositories) | | String
| `-h,--help` | Display the help and sub-commands | | boolean
diff --git
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-run.adoc
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-run.adoc
index 6dd24a3d2ce8..24ae52023600 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-run.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-run.adoc
@@ -38,7 +38,7 @@ camel run [options]
| `--jfr` | Enables Java Flight Recorder saving recording to disk on exit |
false | boolean
| `--jfr-profile` | Java Flight Recorder profile to use (such as default or
profile) | | String
| `--jvm-debug` | To enable JVM remote debugging on port 4004 by default. The
supported values are true to enable the remote debugging, false to disable the
remote debugging or a number to use a custom port | | int
-| `--kamelets-version` | Apache Camel Kamelets version | | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from
classpath if not set) | | String
| `--lazy-bean` | Whether to use lazy bean initialization (can help with
complex classloading issues) | false | boolean
| `--local-kamelet-dir` | Local directory (or github link) for loading
Kamelets (takes precedence). Multiple directories can be specified separated by
comma. | | String
| `--logging` | Can be used to turn off logging | true | boolean
diff --git
a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-sbom.adoc
b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-sbom.adoc
index 0820233f86e4..3fadef7caa66 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-sbom.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-sbom.adoc
@@ -37,7 +37,7 @@ camel sbom [options]
| `--hawtio-version` | Version of the Hawtio web console |
HawtioVersion.HAWTIO_VERSION | String
| `--ignore-loading-error` | Whether to ignore route loading and compilation
errors (use this with care!) | false | boolean
| `--java-version,--java` | Java version | 21 | String
-| `--kamelets-version` | Apache Camel Kamelets version |
RuntimeType.KAMELETS_VERSION | String
+| `--kamelets-version` | Apache Camel Kamelets version (auto-detected from
classpath if not set) | | String
| `--lazy-bean` | Whether to use lazy bean initialization (can help with
complex classloading issues | true | boolean
| `--local-kamelet-dir` | Local directory for loading Kamelets (takes
precedence) | | String
| `--logging` | Can be used to turn on logging to console (logs by default to
file in <user home>/.camel directory) | false | boolean
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/generated/resources/META-INF/camel-jbang-commands-metadata.json
b/dsl/camel-jbang/camel-jbang-core/src/generated/resources/META-INF/camel-jbang-commands-metadata.json
index 85c365adf03a..a5e204aefda7 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/generated/resources/META-INF/camel-jbang-commands-metadata.json
+++
b/dsl/camel-jbang/camel-jbang-core/src/generated/resources/META-INF/camel-jbang-commands-metadata.json
@@ -1,29 +1,29 @@
{
"commands": [
{ "name": "bind", "fullName": "bind", "description": "Bind source and sink
Kamelets as a new Camel integration", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.bind.Bind", "options": [ { "names":
"--error-handler", "description": "Add error handler
(none|log|sink:<endpoint>). Sink endpoints are expected in the format
[[apigroup\/]version:]kind:[namespace\/]name, plain Camel URIs or Kamelet
name.", "javaType": "java.lang.String", "type": "string" }, { "names":
"--output", "d [...]
- { "name": "catalog", "fullName": "catalog", "description": "List artifacts
from Camel Catalog", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.catalog.CatalogCommand", "options": [
{ "names": "-h,--help", "description": "Display the help and sub-commands",
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name":
"component", "fullName": "catalog component", "description": "List components
from the Camel Catalog", "sourceClass": "org.apache.camel.dsl.jbang.co [...]
+ { "name": "catalog", "fullName": "catalog", "description": "List artifacts
from Camel Catalog", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.catalog.CatalogCommand", "options": [
{ "names": "-h,--help", "description": "Display the help and sub-commands",
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name":
"component", "fullName": "catalog component", "description": "List components
from the Camel Catalog", "sourceClass": "org.apache.camel.dsl.jbang.co [...]
{ "name": "cmd", "fullName": "cmd", "description": "Performs commands in
the running Camel integrations, such as start\/stop route, or change logging
levels.", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.action.CamelAction", "options": [ {
"names": "-h,--help", "description": "Display the help and sub-commands",
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name":
"browse", "fullName": "cmd browse", "description": "Browse pending messages on
endpoints [...]
{ "name": "completion", "fullName": "completion", "description": "Generate
completion script for bash\/zsh", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.Complete", "options": [ { "names":
"-h,--help", "description": "Display the help and sub-commands", "javaType":
"boolean", "type": "boolean" } ] },
{ "name": "config", "fullName": "config", "description": "Get and set user
configuration values", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.config.ConfigCommand", "options": [ {
"names": "-h,--help", "description": "Display the help and sub-commands",
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name": "get",
"fullName": "config get", "description": "Display user configuration value",
"sourceClass": "org.apache.camel.dsl.jbang.core.commands.config. [...]
- { "name": "debug", "fullName": "debug", "description": "Debug local Camel
integration", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Debug",
"options": [ { "names": "--ago", "description": "Use ago instead of yyyy-MM-dd
HH:mm:ss in timestamp.", "javaType": "boolean", "type": "boolean" }, { "names":
"--background", "description": "Run in the background", "defaultValue":
"false", "javaType": "boolean", "type": "boolean" }, { "names":
"--background-wait", "description": "To [...]
- { "name": "dependency", "fullName": "dependency", "description": "Displays
all Camel dependencies required to run", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.DependencyCommand", "options": [ {
"names": "-h,--help", "description": "Display the help and sub-commands",
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name":
"copy", "fullName": "dependency copy", "description": "Copies all Camel
dependencies required to run to a specific directory", "sourc [...]
+ { "name": "debug", "fullName": "debug", "description": "Debug local Camel
integration", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Debug",
"options": [ { "names": "--ago", "description": "Use ago instead of yyyy-MM-dd
HH:mm:ss in timestamp.", "javaType": "boolean", "type": "boolean" }, { "names":
"--background", "description": "Run in the background", "defaultValue":
"false", "javaType": "boolean", "type": "boolean" }, { "names":
"--background-wait", "description": "To [...]
+ { "name": "dependency", "fullName": "dependency", "description": "Displays
all Camel dependencies required to run", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.DependencyCommand", "options": [ {
"names": "-h,--help", "description": "Display the help and sub-commands",
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name":
"copy", "fullName": "dependency copy", "description": "Copies all Camel
dependencies required to run to a specific directory", "sourc [...]
{ "name": "dirty", "fullName": "dirty", "description": "Check if there are
dirty files from previous Camel runs that did not terminate gracefully",
"sourceClass": "org.apache.camel.dsl.jbang.core.commands.process.Dirty",
"options": [ { "names": "--clean", "description": "Clean dirty files which are
no longer in use", "defaultValue": "false", "javaType": "boolean", "type":
"boolean" }, { "names": "-h,--help", "description": "Display the help and
sub-commands", "javaType": "boolean", " [...]
- { "name": "doc", "fullName": "doc", "description": "Shows documentation
for kamelet, component, and other Camel resources", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDoc", "options": [ {
"names": "--camel-version", "description": "To use a different Camel version
than the default version", "javaType": "java.lang.String", "type": "string" },
{ "names": "--download", "description": "Whether to allow automatic downloading
JAR dependencies (over the internet [...]
+ { "name": "doc", "fullName": "doc", "description": "Shows documentation
for kamelet, component, and other Camel resources", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.catalog.CatalogDoc", "options": [ {
"names": "--camel-version", "description": "To use a different Camel version
than the default version", "javaType": "java.lang.String", "type": "string" },
{ "names": "--download", "description": "Whether to allow automatic downloading
JAR dependencies (over the internet [...]
{ "name": "eval", "fullName": "eval", "description": "Evaluate Camel
expressions and scripts", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.EvalCommand", "options": [ { "names":
"-h,--help", "description": "Display the help and sub-commands", "javaType":
"boolean", "type": "boolean" } ], "subcommands": [ { "name": "expression",
"fullName": "eval expression", "description": "Evaluates Camel expression",
"sourceClass": "org.apache.camel.dsl.jbang.core.commands.action.EvalEx [...]
{ "name": "explain", "fullName": "explain", "description": "Explain what a
Camel route does using AI\/LLM", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.Explain", "options": [ { "names":
"--api-key", "description": "API key for authentication. Also reads
OPENAI_API_KEY or LLM_API_KEY env vars", "javaType": "java.lang.String",
"type": "string" }, { "names": "--api-type", "description": "API type: 'ollama'
or 'openai' (OpenAI-compatible)", "defaultValue": "ollama", "javaTyp [...]
- { "name": "export", "fullName": "export", "description": "Export to other
runtimes (Camel Main, Spring Boot, or Quarkus)", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.Export", "options": [ { "names":
"--build-property", "description": "Maven\/Gradle build properties, ex.
--build-property=prop1=foo", "javaType": "java.util.List", "type": "array" }, {
"names": "--build-tool", "description": "DEPRECATED: Build tool to use (maven
or gradle) (gradle is deprecated)", "defaultV [...]
+ { "name": "export", "fullName": "export", "description": "Export to other
runtimes (Camel Main, Spring Boot, or Quarkus)", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.Export", "options": [ { "names":
"--build-property", "description": "Maven\/Gradle build properties, ex.
--build-property=prop1=foo", "javaType": "java.util.List", "type": "array" }, {
"names": "--build-tool", "description": "DEPRECATED: Build tool to use (maven
or gradle) (gradle is deprecated)", "defaultV [...]
{ "name": "get", "fullName": "get", "description": "Get status of Camel
integrations", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.process.CamelStatus", "options": [ {
"names": "--watch", "description": "Execute periodically and showing output
fullscreen", "javaType": "boolean", "type": "boolean" }, { "names":
"-h,--help", "description": "Display the help and sub-commands", "javaType":
"boolean", "type": "boolean" } ], "subcommands": [ { "name": "bean",
"fullName": "get [...]
{ "name": "harden", "fullName": "harden", "description": "Suggest security
hardening for Camel routes using AI\/LLM", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.Harden", "options": [ { "names":
"--api-key", "description": "API key for authentication. Also reads
OPENAI_API_KEY or LLM_API_KEY env vars", "javaType": "java.lang.String",
"type": "string" }, { "names": "--api-type", "description": "API type: 'ollama'
or 'openai' (OpenAI-compatible)", "defaultValue": "ollama", [...]
{ "name": "hawtio", "fullName": "hawtio", "description": "Launch Hawtio
web console", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.process.Hawtio", "options": [ {
"names": "--host", "description": "Hostname to bind the Hawtio web console to",
"defaultValue": "127.0.0.1", "javaType": "java.lang.String", "type": "string"
}, { "names": "--openUrl", "description": "To automatic open Hawtio web console
in the web browser", "defaultValue": "true", "javaType": "boolean", "type":
[...]
{ "name": "infra", "fullName": "infra", "description": "List and Run
external services for testing and prototyping", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.infra.InfraCommand", "options": [ {
"names": "--json", "description": "Output in JSON Format", "javaType":
"boolean", "type": "boolean" }, { "names": "-h,--help", "description": "Display
the help and sub-commands", "javaType": "boolean", "type": "boolean" } ],
"subcommands": [ { "name": "get", "fullName": "infra [...]
- { "name": "init", "fullName": "init", "description": "Creates a new Camel
integration", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Init",
"options": [ { "names": "--clean-dir,--clean-directory", "description":
"Whether to clean directory first (deletes all files in directory)",
"javaType": "boolean", "type": "boolean" }, { "names": "--dir,--directory",
"description": "Directory relative path where the new Camel integration will be
saved", "defaultValue": ".", "javaType" [...]
+ { "name": "init", "fullName": "init", "description": "Creates a new Camel
integration", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Init",
"options": [ { "names": "--clean-dir,--clean-directory", "description":
"Whether to clean directory first (deletes all files in directory)",
"javaType": "boolean", "type": "boolean" }, { "names": "--dir,--directory",
"description": "Directory relative path where the new Camel integration will be
saved", "defaultValue": ".", "javaType" [...]
{ "name": "jolokia", "fullName": "jolokia", "description": "Attach Jolokia
JVM Agent to a running Camel integration", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.process.Jolokia", "options": [ {
"names": "--port", "description": "To use a specific port number when attaching
Jolokia JVM Agent (default a free port is found in range 8778-9999)",
"javaType": "int", "type": "integer" }, { "names": "--stop", "description":
"Stops the Jolokia JVM Agent in the running Camel inte [...]
{ "name": "log", "fullName": "log", "description": "Tail logs from running
Camel integrations", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.action.CamelLogAction", "options": [
{ "names": "--find", "description": "Find and highlight matching text (ignore
case).", "javaType": "java.lang.String", "type": "string" }, { "names":
"--follow", "description": "Keep following and outputting new log lines (press
enter to exit).", "defaultValue": "true", "javaType": "boolean", "typ [...]
{ "name": "nano", "fullName": "nano", "description": "Nano editor to edit
file", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Nano",
"options": [ { "names": "-h,--help", "description": "Display the help and
sub-commands", "javaType": "boolean", "type": "boolean" } ] },
{ "name": "plugin", "fullName": "plugin", "description": "Manage plugins
that add sub-commands to this CLI", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.plugin.PluginCommand", "options": [ {
"names": "-h,--help", "description": "Display the help and sub-commands",
"javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name": "add",
"fullName": "plugin add", "description": "Add new plugin", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.plugin.PluginA [...]
{ "name": "ps", "fullName": "ps", "description": "List running Camel
integrations", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.process.ListProcess", "options": [ {
"names": "--json", "description": "Output in JSON Format", "javaType":
"boolean", "type": "boolean" }, { "names": "--pid", "description": "List only
pid in the output", "javaType": "boolean", "type": "boolean" }, { "names":
"--remote", "description": "Break down counters into remote\/total pairs",
"javaType": [...]
- { "name": "run", "fullName": "run", "description": "Run as local Camel
integration", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Run",
"options": [ { "names": "--background", "description": "Run in the background",
"defaultValue": "false", "javaType": "boolean", "type": "boolean" }, { "names":
"--background-wait", "description": "To wait for run in background to startup
successfully, before returning", "defaultValue": "true", "javaType": "boolean",
"type": "boolean" }, { [...]
- { "name": "sbom", "fullName": "sbom", "description": "Generate a CycloneDX
or SPDX SBOM for a specific project", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.SBOMGenerator", "options": [ {
"names": "--build-property", "description": "Maven\/Gradle build properties,
ex. --build-property=prop1=foo", "javaType": "java.util.List", "type": "array"
}, { "names": "--build-tool", "description": "DEPRECATED: Build tool to use
(maven or gradle) (gradle is deprecated)", "defaultValu [...]
+ { "name": "run", "fullName": "run", "description": "Run as local Camel
integration", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Run",
"options": [ { "names": "--background", "description": "Run in the background",
"defaultValue": "false", "javaType": "boolean", "type": "boolean" }, { "names":
"--background-wait", "description": "To wait for run in background to startup
successfully, before returning", "defaultValue": "true", "javaType": "boolean",
"type": "boolean" }, { [...]
+ { "name": "sbom", "fullName": "sbom", "description": "Generate a CycloneDX
or SPDX SBOM for a specific project", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.SBOMGenerator", "options": [ {
"names": "--build-property", "description": "Maven\/Gradle build properties,
ex. --build-property=prop1=foo", "javaType": "java.util.List", "type": "array"
}, { "names": "--build-tool", "description": "DEPRECATED: Build tool to use
(maven or gradle) (gradle is deprecated)", "defaultValu [...]
{ "name": "script", "fullName": "script", "description": "Run Camel
integration as shell script for terminal scripting", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.Script", "options": [ { "names":
"--logging", "description": "Can be used to turn on logging (logs to file in
<user home>\/.camel directory)", "defaultValue": "false", "javaType":
"boolean", "type": "boolean" }, { "names": "--logging-level", "description":
"Logging level ()", "defaultValue": "info", "javaType [...]
{ "name": "shell", "fullName": "shell", "description": "Interactive Camel
JBang shell.", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.Shell",
"options": [ { "names": "-h,--help", "description": "Display the help and
sub-commands", "javaType": "boolean", "type": "boolean" } ] },
{ "name": "stop", "fullName": "stop", "description": "Shuts down running
Camel integrations", "sourceClass":
"org.apache.camel.dsl.jbang.core.commands.process.StopProcess", "options": [ {
"names": "--kill", "description": "To force killing the process (SIGKILL)",
"javaType": "boolean", "type": "boolean" }, { "names": "-h,--help",
"description": "Display the help and sub-commands", "javaType": "boolean",
"type": "boolean" } ] },
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index 767f559aac68..050b546721b2 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -170,9 +170,8 @@ public abstract class ExportBaseCommand extends
CamelCommand {
protected String camelVersion;
@CommandLine.Option(names = {
- "--kamelets-version" }, description = "Apache Camel Kamelets
version",
- defaultValue = RuntimeType.KAMELETS_VERSION)
- protected String kameletsVersion = RuntimeType.KAMELETS_VERSION;
+ "--kamelets-version" }, description = "Apache Camel Kamelets
version (auto-detected from classpath if not set)")
+ protected String kameletsVersion;
@CommandLine.Option(names = { "--profile" }, scope =
CommandLine.ScopeType.INHERIT,
description = "Profile to export (dev, test, or
prod).")
@@ -370,6 +369,9 @@ public abstract class ExportBaseCommand extends
CamelCommand {
protected abstract Integer export() throws Exception;
protected Integer runSilently(boolean ignoreLoadingError, boolean
lazyBean, boolean verbose) throws Exception {
+ if (kameletsVersion == null) {
+ kameletsVersion = VersionHelper.extractKameletsVersion();
+ }
Run run = new Run(getMain());
// need to declare the profile to use for run
run.exportBaseDir = exportBaseDir;
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
index 4100a11e70a6..bf172dd0b214 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
@@ -69,7 +69,7 @@ public class Init extends CamelCommand {
private String fromKamelet;
@Option(names = {
- "--kamelets-version" }, description = "Apache Camel Kamelets
version")
+ "--kamelets-version" }, description = "Apache Camel Kamelets
version (auto-detected from classpath if not set)")
private String kameletsVersion;
@Option(names = { "--pipe" },
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 6b0d17f90aec..31bf98190f21 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
@@ -179,7 +179,8 @@ public class Run extends CamelCommand {
description = "To run using a different Camel Spring Boot version
than the default version.")
String camelSpringBootVersion;
- @Option(names = { "--kamelets-version" }, description = "Apache Camel
Kamelets version")
+ @Option(names = { "--kamelets-version" },
+ description = "Apache Camel Kamelets version (auto-detected from
classpath if not set)")
String kameletsVersion;
@CommandLine.Option(names = { "--quarkus-group-id" }, description =
"Quarkus Platform Maven groupId",
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
index 55786090d359..fa397bb25410 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
@@ -36,6 +36,7 @@ import org.apache.camel.dsl.jbang.core.common.CatalogLoader;
import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
import org.apache.camel.dsl.jbang.core.common.RuntimeType;
import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter;
+import org.apache.camel.dsl.jbang.core.common.VersionHelper;
import org.apache.camel.main.util.SuggestSimilarHelper;
import org.apache.camel.tooling.maven.MavenGav;
import org.apache.camel.tooling.model.BaseOptionModel;
@@ -103,9 +104,8 @@ public class CatalogDoc extends CamelCommand {
boolean headers;
@CommandLine.Option(names = {
- "--kamelets-version" }, description = "Apache Camel Kamelets
version",
- defaultValue = RuntimeType.KAMELETS_VERSION)
- String kameletsVersion = RuntimeType.KAMELETS_VERSION;
+ "--kamelets-version" }, description = "Apache Camel Kamelets
version (auto-detected from classpath if not set)")
+ String kameletsVersion;
CamelCatalog catalog;
@@ -128,6 +128,9 @@ public class CatalogDoc extends CamelCommand {
@Override
public Integer doCall() throws Exception {
+ if (kameletsVersion == null) {
+ kameletsVersion = VersionHelper.extractKameletsVersion();
+ }
this.catalog = loadCatalog();
String prefix = StringHelper.before(name, ":");
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java
index 304ba8d84f28..33aac66c3e73 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java
@@ -29,7 +29,6 @@ import com.github.freva.asciitable.Column;
import com.github.freva.asciitable.HorizontalAlign;
import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
-import org.apache.camel.dsl.jbang.core.common.RuntimeType;
import org.apache.camel.dsl.jbang.core.common.VersionHelper;
import org.apache.camel.main.download.DependencyDownloaderClassLoader;
import org.apache.camel.main.download.MavenDependencyDownloader;
@@ -54,9 +53,8 @@ public class CatalogKamelet extends CamelCommand {
String filterName;
@CommandLine.Option(names = {
- "--kamelets-version" }, description = "Apache Camel Kamelets
version",
- defaultValue = RuntimeType.KAMELETS_VERSION)
- String kameletsVersion = RuntimeType.KAMELETS_VERSION;
+ "--kamelets-version" }, description = "Apache Camel Kamelets
version (auto-detected from classpath if not set)")
+ String kameletsVersion;
public CatalogKamelet(CamelJBangMain main) {
super(main);
diff --git
a/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/KameletTools.java
b/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/KameletTools.java
index 61e1d8a06ed9..c4eca426b5f5 100644
---
a/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/KameletTools.java
+++
b/dsl/camel-jbang/camel-jbang-mcp/src/main/java/org/apache/camel/dsl/jbang/core/commands/mcp/KameletTools.java
@@ -29,7 +29,7 @@ import io.quarkiverse.mcp.server.ToolCallException;
import org.apache.camel.dsl.jbang.core.commands.catalog.KameletCatalogHelper;
import org.apache.camel.dsl.jbang.core.commands.catalog.KameletModel;
import org.apache.camel.dsl.jbang.core.commands.catalog.KameletOptionModel;
-import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.dsl.jbang.core.common.VersionHelper;
/**
* MCP Tools for querying the Kamelet Catalog using Quarkus MCP Server.
@@ -53,7 +53,7 @@ public class KameletTools {
try {
String version = kameletsVersion != null &&
!kameletsVersion.isBlank()
- ? kameletsVersion : RuntimeType.KAMELETS_VERSION;
+ ? kameletsVersion : VersionHelper.extractKameletsVersion();
Map<String, Object> kamelets =
KameletCatalogHelper.loadKamelets(version, null);
@@ -108,7 +108,7 @@ public class KameletTools {
try {
String version = kameletsVersion != null &&
!kameletsVersion.isBlank()
- ? kameletsVersion : RuntimeType.KAMELETS_VERSION;
+ ? kameletsVersion : VersionHelper.extractKameletsVersion();
KameletModel km = KameletCatalogHelper.loadKameletModel(kamelet,
version, null);
if (km == null) {