You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Ricardo Martinez (Jira)" <ji...@apache.org> on 2026/09/14 12:24:00 UTC
[jira] [Created] (CAMEL-24726) camel-jbang: extract camel-jbang-runner module
Ricardo Martinez created CAMEL-24726:
----------------------------------------
Summary: camel-jbang: extract camel-jbang-runner module
Key: CAMEL-24726
URL: https://issues.apache.org/jira/browse/CAMEL-24726
Project: Camel
Issue Type: Sub-task
Components: camel-jbang
Reporter: Ricardo Martinez
h2. Motivation
{{Run.runCamelMain()}}, {{runQuarkus()}} and {{runSpringBoot()}} (~700 lines) contain the logic for exporting a project to a temp dir, packaging it with Maven, and launching the resulting JAR or dev server. This logic is reusable but today is locked inside the CLI.
Extracting it is the first step toward letting the Camel TUI, Kaoto and external tooling build and launch projects through a Java API without spawning the {{camel}} binary.
h2. What changes
New module {{dsl/camel-jbang/camel-jbang-runner}} (package {{org.apache.camel.dsl.jbang.runner}}).
Dependencies: {{camel-jbang-core}}, {{camel-util}}. No picocli, no jline, no camel-kamelet-main.
New public API:
* {{LaunchOptions}} — plain POJO: jvmArgs, jvmDebugPort, profile, dev, sourceDir, logFile,
durationMax*, jfr, quiet
* {{LaunchCommand}} — record(List<String> command, Path workingDir, Map<String,String> env) with a {{start()}} convenience method
* {{ProjectRunner}} — interface with {{buildCommand(Path, LaunchOptions)}} (runs mvnw package) and {{runCommand(Path, LaunchOptions)}} (runs java -jar / quarkus:run / spring-boot:run); implementations: {{CamelMainProjectRunner}}, {{QuarkusProjectRunner}}, {{SpringBootProjectRunner}}
{{Run.runCamelMain()}}, {{runQuarkus()}} and {{runSpringBoot()}} in {{camel-jbang-core}} each shrink to ~10 lines delegating to the matching {{ProjectRunner}}. The exportRun / KameletMain / writeSettings machinery is completely untouched.
Add the module to {{dsl/camel-jbang/pom.xml}} and {{bom/camel-bom}}.
h2. Compatibility
* No type moves. No import rewrites anywhere.
* No CLI option added, removed or renamed.
* {{camel run --runtime=main|quarkus|spring-boot}} behaviour is identical.
h2. Note
After this stage a consumer of {{camel-jbang-runner}} still gets picocli, jline and camel-kamelet-main transitively through {{camel-jbang-core}}. The picocli-free API is available after stage 2.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)