This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch jt in repository https://gitbox.apache.org/repos/asf/camel.git
commit f8cca74747d40062393586c9b6d91488d4fb8832 Author: Claus Ibsen <[email protected]> AuthorDate: Thu Aug 14 10:32:47 2025 +0200 CAMEL-22205: camel-jbang: Document all camel.jbang options for tooling --- .../modules/ROOT/pages/camel-jbang.adoc | 51 ++++++++++++++++++++++ .../maven/packaging/PrepareCamelJBangDocMojo.java | 32 +++++++------- 2 files changed, 68 insertions(+), 15 deletions(-) diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc index 31fd0ab88a4..04243ab86b0 100644 --- a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc +++ b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc @@ -3945,6 +3945,57 @@ which also can be used to specific parameters for export such as selecting the r The follow options related to _exporting_ or _running_, can be configured in `application.properties`: // jbang options: START +=== Camel JBang configurations +The camel.jbang supports 44 options, which are listed below. + +[width="100%",cols="2,5,^1,2",options="header"] +|=== +| Name | Description | Default | Type +| *camel.jbang.buildTool* | Build tool to use (Maven or Gradle) | Maven | String +| *camel.jbang.camel-version* | The version of Apache Camel to use | | String +| *camel.jbang.camelSpringBoot{zwsp}Version* | To use a custom Camel version when running or export to Spring Boot | | String +| *camel.jbang.classpathFiles* | Additional files to add to classpath (Use commas to separate multiple files). | | String +| *camel.jbang.compileWorkDir* | Work directory for compiler. Can be used to write compiled classes or other resources. | .camel-jbang/compile | String +| *camel.jbang.console* | Developer console at /q/dev on local HTTP server (port 8080 by default) | false | boolean +| *camel.jbang.dependencies* | Additional dependencies (Use commas to separate multiple dependencies). | | String +| *camel.jbang.download* | Whether to allow automatic downloading JAR dependencies (over the internet) | true | boolean +| *camel.jbang.excludes* | Exclude files by name or pattern (Use commas to separate multiple files) | | String +| *camel.jbang.exportDir* | Directory where the project will be exported | . | String +| *camel.jbang.gav* | Maven coordinate (groupId:artifactId:version) | | String +| *camel.jbang.gradleWrapper* | Include Gradle Wrapper files in the exported project | true | boolean +| *camel.jbang.groovyFiles* | Additional groovy source files to export to src/main/resources/camel-groovy directory (Use commas to separate multiple files) | | String +| *camel.jbang.health* | Health check at /observe/health on local HTTP server (port 8080 by default) | false | boolean +| *camel.jbang.ignoreLoadingError* | Whether to ignore route loading and compilation errors (use this with care!) | false | boolean +| *camel.jbang.javaVersion* | Java version (17 or 21) | 21 | String +| *camel.jbang.jfr* | Enables Java Flight Recorder saving recording to disk on exit | false | boolean +| *camel.jbang.jfr-profile* | Java Flight Recorder profile to use (such as default or profile) | default | String +| *camel.jbang.jib-maven-plugin-version* | Version to use for jib-maven-plugin if exporting to camel-main and have Kubernetes enabled (jkube.xxx options) | 3.4.5 | String +| *camel.jbang.jkube-maven-plugin-version* | Version to use for jkube-maven-plugin if exporting to camel-main and have Kubernetes enabled (jkube.xxx options) | 1.18.1 | String +| *camel.jbang.jkubeFiles* | Resource YAML fragments for Kubernetes using Eclipse JKube tool (Use commas to separate multiple files). | | String +| *camel.jbang.kameletsVersion* | Apache Camel Kamelets version. By default the Kamelets are the same version as Camel. | | String +| *camel.jbang.lazyBean* | Whether to use lazy bean initialization (can help with complex classloading issues) | false | boolean +| *camel.jbang.localKameletDir* | Local file directory for loading custom Kamelets | | String +| *camel.jbang.maven-apache-snapshot-enabled* | Whether downloading JARs from ASF Maven Snapshot repository is enabled | true | boolean +| *camel.jbang.maven-central-enabled* | Whether downloading JARs from Maven Central repository is enabled | true | boolean +| *camel.jbang.maven-settings* | Optional location of Maven settings.xml file to configure servers, repositories, mirrors, and proxies. If set to false, not even the default /.m2/settings.xml will be used. | | String +| *camel.jbang.maven-settings-security* | Optional location of Maven settings-security.xml file to decrypt Maven Settings (settings.xml) file | | String +| *camel.jbang.mavenWrapper* | Include Maven Wrapper files in the exported project | true | boolean +| *camel.jbang.metrics* | Metrics (Micrometer and Prometheus) at /observe/metrics on local HTTP server (port 8080 by default) when running standalone Camel | false | boolean +| *camel.jbang.openApi* | File name of open-api spec file (JSON or YAML) to generate routes from the swagger/openapi API spec file. | | String +| *camel.jbang.packageScanJars* | Whether to automatic package scan JARs for custom Spring or Quarkus beans making them available for Camel JBang | false | boolean +| *camel.jbang.prompt* | Allow user to type in required parameters in prompt if not present in application | false | boolean +| *camel.jbang.quarkusArtifactId* | Quarkus Platform Maven artifactId | | String +| *camel.jbang.quarkusGroupId* | Quarkus Platform Maven groupId | | String +| *camel.jbang.quarkusVersion* | Quarkus Platform version | | String +| *camel.jbang.repos* | Additional Maven repositories for download on-demand (Use commas to separate multiple repositories) | | String +| *camel.jbang.runtime* | Which runtime to use (camel-main, spring-boot, quarkus) | | String +| *camel.jbang.scriptFiles* | Additional shell script files to export to src/main/scripts directory | | String +| *camel.jbang.sourceDir* | Source directory for dynamically loading Camel file(s) to run. When using this, then files cannot be specified at the same time. | | String +| *camel.jbang.springBootVersion* | Spring Boot version | | String +| *camel.jbang.stub* | Stubs all the matching endpoint with the given component name or pattern. Multiple names can be separated by comma. (all = everything). | | String +| *camel.jbang.tlsFiles* | Additional SSL/TLS files to export to src/main/tls directory | | String +| *camel.jbang.verbose* | Verbose output of startup activity (dependency resolution and downloading | false | boolean +|=== // jbang options: END diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelJBangDocMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelJBangDocMojo.java index 8d0f8450699..8f19da01cbd 100644 --- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelJBangDocMojo.java +++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareCamelJBangDocMojo.java @@ -16,8 +16,17 @@ */ package org.apache.camel.maven.packaging; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import javax.inject.Inject; + +import org.apache.camel.tooling.model.JBangModel; import org.apache.camel.tooling.model.JsonMapper; -import org.apache.camel.tooling.model.MainModel; import org.apache.camel.tooling.util.PackageHelper; import org.apache.camel.tooling.util.Strings; import org.apache.maven.plugin.MojoExecutionException; @@ -31,14 +40,6 @@ import org.apache.maven.project.MavenProjectHelper; import org.codehaus.plexus.build.BuildContext; import org.mvel2.templates.TemplateRuntime; -import javax.inject.Inject; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - /** * Prepares camel-jbang by updating the jbang documentation. */ @@ -49,7 +50,7 @@ public class PrepareCamelJBangDocMojo extends AbstractGeneratorMojo { /** * The documentation directory */ - @Parameter(defaultValue = "${project.basedir}/../../docs/user-manual/modules/ROOT/pages") + @Parameter(defaultValue = "${project.basedir}/../../../docs/user-manual/modules/ROOT/pages") protected File docDocDir; /** @@ -66,7 +67,8 @@ public class PrepareCamelJBangDocMojo extends AbstractGeneratorMojo { @Override public void execute(MavenProject project) throws MojoFailureException, MojoExecutionException { - docDocDir = new File(project.getBasedir().getParentFile().getParent(), "docs/user-manual/modules/ROOT/pages"); + docDocDir = new File( + project.getBasedir().getParentFile().getParentFile().getParent(), "docs/user-manual/modules/ROOT/pages"); jbangJsonFile = new File(project.getBasedir(), "src/generated/resources/META-INF/camel-main-configuration-metadata.json"); super.execute(project); @@ -84,7 +86,7 @@ public class PrepareCamelJBangDocMojo extends AbstractGeneratorMojo { boolean updated; try { String json = PackageHelper.loadText(jbangJsonFile); - MainModel model = JsonMapper.generateMainModel(json); + JBangModel model = JsonMapper.generateJBangModel(json); String options = evaluateTemplate("jbang-options.mvel", model); updated = updateOptionsIn(file, "jbang", options); } catch (IOException e) { @@ -98,17 +100,17 @@ public class PrepareCamelJBangDocMojo extends AbstractGeneratorMojo { getLog().debug("No changes to doc file: " + file); } } else { - getLog().warn("No main doc file: " + file); + getLog().warn("No jbang doc file: " + file); } } - private static String evaluateTemplate(final String templateName, final MainModel model) throws MojoExecutionException { + private static String evaluateTemplate(final String templateName, final JBangModel model) throws MojoExecutionException { StringBuilder sb = new StringBuilder(256); try (InputStream templateStream = UpdateReadmeMojo.class.getClassLoader().getResourceAsStream(templateName)) { String template = PackageHelper.loadText(templateStream); // loop each group and eval - for (MainModel.MainGroupModel group : model.getGroups()) { + for (JBangModel.JBangGroupModel group : model.getGroups()) { Map<String, Object> root = new HashMap<>(); root.put("group", group); root.put("options", model.getOptions().stream()
