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)