4.7. 导出到 Red Hat build of Apache Camel for Spring Boot
您可以将 Camel CLI 集成 导出到
基于 Java 的传统项目,如 Spring Boot 或 Quarkus。在使用 Camel CLI 构建原型后,可能需要执行此操作,并且需要传统的基于 Java 的项目,并需要更多对 Java 编码的需求,或者使用 Spring Boot、Quarkus 或 vanilla Camel Main 的强大运行时。
4.7.1. 导出到 Red Hat build of Apache Camel for Spring Boot
命令会将 --runtime=spring-boot 导出您的当前 Camel CLI 文件导出到
基于 Maven 的 Spring Boot 项目,文件整理在 src/main/
文件夹结构中。
例如,要使用 Maven groupId com.foo
和 artifactId acme
和版本 1.0-SNAPSHOT
将 导出到 Spring Boot,请运行:
camel export --runtime=spring-boot --gav=com.foo:acme:1.0-SNAPSHOT
这将导出到 当前目录
,这意味着文件被移到所需的文件夹结构中。
要导出到另一个目录,请运行:
camel export --runtime=spring-boot --gav=com.foo:acme:1.0-SNAPSHOT --directory=../myproject
当导出到 Spring Boot 时,pom.xml
或 build.gradle
中定义的 Camel 版本与 Camel CLI 使用的版本相同。但是,您可以指定不同的 Camel 版本,如下所示:
camel export --runtime=spring-boot --gav=com.foo:acme:1.0-SNAPSHOT --directory=../myproject --camel-spring-boot-version=4.0.0.redhat-00045
如需了解更多详细信息,运行 camel export --help
命令来查看可能的选项。
4.7.2. 包括使用 Camel CLI 导出
当导出到 Spring Boot、Quarkus 或 Camel Main 时,Camel JBang CLI 不会包含在框中。要继续使用 Camel CLI (即 camel
),您需要在 --deps
选项中添加 camel:cli-connector
,如下所示:
camel export --runtime=quarkus --gav=com.foo:acme:1.0-SNAPSHOT --deps=camel:cli-connector --directory=../myproject
4.7.3. 配置导出
export 命令默认从 application.properties
文件加载配置,该文件用于导出特定参数,如选择运行时和 java 版本。
以下选项与 导出
相关,可在 application.properties
文件中配置:
选项 | Description |
---|---|
| runtime (spring-boot, quarkus, 或 camel-main) |
| Maven group:artifact:version |
| 其他依赖项(使用逗号分隔多个依赖项)。请参阅 添加自定义 JAR 的更多详细信息。 |
| 要添加到 classpath 的其他文件(使用逗号分隔多个文件)。请参阅 添加自定义 JAR 的更多详细信息。 |
| Java 版本(11 或 17) |
| Apache Camel Kamelets 版本 |
| 加载 Kamelets 的本地目录 |
| 用于 Spring Boot 的 Camel 版本 |
| Spring Boot 版本 |
| Quarkus Platform Maven groupId |
| quarkus Platform Maven artifactId |
| Quarkus Platform 版本 |
| 在导出的项目中包含 Maven Wrapper 文件 |
| 在导出的项目中包括 Gradle Wrapper 文件 |
| 使用构建工具(maven 或 gradle) |
| 用于按需下载的额外 maven 存储库(使用逗号分隔多个存储库) |
| maven setting.xml 文件的可选位置,以配置服务器、存储库、镜像和代理。如果设置为 false,则不会使用默认的 ~/.m2/settings.xml。 |
| maven settings-security.xml 文件的可选位置来解密 settings.xml |
| 导出项目的目录。 |
| 运行独立 Camel 时要使用的 HTTP 服务器端口,如启用 --console 时(默认为端口 8080)。 |
| 运行独立 Camel 时,位于本地 HTTP 服务器上的 /q/dev 的开发人员控制台(默认为 8080)。 |
| 运行独立 Camel 时,本地 HTTP 服务器上的 /q/health (默认为 8080)进行健康检查。 |
这些是 export 命令中的选项。您可以使用 camel export --help
查看更多详细信息和默认值。
4.7.4. Configuration
Camel CLI config 命令用于存储和使用用户配置。这消除了每次指定 CLI 选项的需求。例如,要运行不同的 Camel 版本,请使用:
camel run * --camel-version=4.0.0.redhat-00036
camel-version
可以添加到用户配置中,例如:
camel config set camel-version=4.0.0.redhat-00036
run
命令使用用户配置:
camel run *
用户配置文件存储在 ~/.camel-jbang-user.properties
中。
4.7.4.1. 设置和取消设置配置
每个 Camel CLI 选项都添加到用户配置中。例如,要导出一个简单的项目,例如:
camel init foo.yaml camel config set gav=com.foo:acme:1.0-SNAPSHOT camel config set runtime=spring-boot camel config set deps=org.apache.camel.springboot:camel-timer-starter camel config set camel-spring-boot-version=4.0.0.redhat-00045 camel config set additional-properties=openshift-maven-plugin-version=1.13.1.redhat-00057 camel export
使用以下命令取消设置用户配置密钥:
camel config unset camel-spring-boot-version
4.7.4.2. 列出和获取配置
使用以下命令列出用户配置密钥:
camel config list
以上上述配置的输出如下:
runtime = spring-boot deps = org.apache.camel.springboot:camel-timer-starter gav = com.foo:acme:1.0-SNAPSHOT
要获取给定键的值,请使用 get
命令。
camel config get gav com.foo:acme:1.0-SNAPSHOT
4.7.4.3. 占位符替换
用户配置值可作为占位符使用命令行属性替换,例如:
camel config set repos=https://maven.repository.redhat.com/ga camel run 'Test.java' --logging-level=info --repos=#repos,https://packages.atlassian.com/maven-external
在本例中,因为 repos 在用户配置(config set)中设置,而 camel run 命令会声明占位符 #repos,因此 camel run 将替换占位符,以便在执行过程中使用这两个存储库。请注意,要引用配置值,语法为 #optionName eg #repos。
占位符替换仅适用于给定 Camel 命令具有的每个选项。您可以查看命令使用 camel run --help
的所有选项。
4.7.5. 故障排除
使用 JBang 时,它将状态存储在 ~/.jbang
目录中。这也是 JBang 存储下载的 JAR 的位置。Camel CLI 还在运行时下载所需的依赖项。但是,这些依赖项下载到您的本地 Maven 存储库 ~/.m2
中。因此,当您在运行 Camel CLI 时对一些问题(如过时的 JAR)进行故障排除时,请尝试删除这些目录或部分目录。