Red Hat Camel K is no longer supported.
As of June 30, 2025, Red Hat build of Camel K has reached End of Life. The suggested replacements is Red Hat build of Apache Camel. For details about moving, see the Camel K to Camel Quarkus migration guide.4.4. 配置 Camel K 集成依赖项
Camel K 会自动解决运行集成代码所需的各种依赖项。但是,您可以使用 kamel run --dependency
选项在运行时显式添加命令行的依赖项。
以下示例集成使用 Camel K 自动依赖项解析:
... from("imap://admin@myserver.com") .to("seda:output") ...
...
from("imap://admin@myserver.com")
.to("seda:output")
...
由于此集成有一个以 imap:
前缀开头的端点,所以 Camel K 可以自动将 camel-mail
组件添加到所需的依赖项列表中。seda:
端点属于 camel-core
,它会自动添加到所有集成中,因此 Camel K 不会为这个组件添加额外的依赖项。
Camel K 自动依赖项解析是用户在运行时透明的。这在开发模式中非常有用,因为您可以在不退出开发循环的情况下快速添加您需要的所有组件。
您可以使用 kamel run --dependency
或 -d
选项显式添加依赖项。您可能需要使用它来指定未包含在 Camel 目录中的依赖项。您可以在命令行中指定多个依赖项。
先决条件
流程
输入
kamel run
命令并使用-d
选项指定依赖项。例如:kamel run -d mvn:com.google.guava:guava:26.0-jre -d camel-mina2 Integration.java
kamel run -d mvn:com.google.guava:guava:26.0-jre -d camel-mina2 Integration.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
您可以通过禁用 dependencies trait: -trait dependencies.enabled=false
来禁用自动依赖项解析。但是,多数情况下不建议这样做。
依赖项的类型
kamel run
命令的 -d
标志非常灵活,并支持多种依赖项。
可以使用 -d
标志直接添加 Camel 依赖项,如下所示:
kamel run -d camel:http Integration.java
kamel run -d camel:http Integration.java
在这种情况下,依赖项将使用正确的版本添加。请注意,指定 Camel 依赖项的标准表示法为 camel:xxx
,而 kamel
也接受 camel-xxx
以实现可用性。
您可以使用 -d
标志、mvn
前缀和 maven 协调来添加 外部依赖项 :
kamel run -d mvn:com.google.guava:guava:26.0-jre Integration.java
kamel run -d mvn:com.google.guava:guava:26.0-jre Integration.java
请注意,如果您的依赖项属于私有存储库,则必须定义此存储库。请参阅 配置 maven。
您可以使用 -d
标志和 file://
前缀来添加 本地依赖项。
kamel run -d file://path/to/integration-dep.jar Integration.java
kamel run -d file://path/to/integration-dep.jar Integration.java
然后,在集成中可以访问 integration-dep.jar
的内容供您使用。
您还可以指定要挂载到正在运行的容器中的数据文件:
kamel run -d file://path/to/data.csv:path/in/container/data.csv Integration.java
kamel run -d file://path/to/data.csv:path/in/container/data.csv Integration.java
指定目录将递归工作。
请注意,这个功能依赖于 Image Registry 被准确设置。
Jitpack 依赖项
如果您的依赖项没有发布到 maven
存储库中,您将找到 Jitpack 作为向运行时集成环境提供任何自定义依赖项的方法。在某些 occasion 中,您将发现它只包含您的路由定义,也有一些帮助程序类或在定义集成行为时必须使用的其他类。使用 Jitpack 时,您将能够编译托管在远程存储库中的 java 项目,并使用生成的软件包作为集成的依赖项。
用法与为任何 maven 依赖项定义的用法相同。可以使用 -d
标志来添加它,但此时,您需要为您要使用的项目存储库(即 github
)定义前缀。它必须以 repository-kind:user/repo/version 的形式提供。
例如,您可以执行以下操作来提供 Apache Commons CSV 依赖项:
kamel run -d github:apache/commons-csv/1.1 Integration.java
kamel run -d github:apache/commons-csv/1.1 Integration.java
我们支持最重要的公共代码存储库:
github:user/repo/version gitlab:user/repo/version bitbucket:user/repo/version gitee:user/repo/version azure:user/repo/version
github:user/repo/version
gitlab:user/repo/version
bitbucket:user/repo/version
gitee:user/repo/version
azure:user/repo/version
当使用 main
分支时,可以省略 version
。否则,它将代表项目仓库中使用的分支或标签。
动态 URI
Camel K 并不总是发现所有依赖项。当您动态创建 URI 时,您必须指示 Camel K 哪个组件要加载(使用 -d
参数)。以下代码片段演示了这一点。
DynamicURI.java
String myTopic = "purchases" from("kafka:" + myTopic + "? ... ") .to(...) ...
String myTopic = "purchases"
from("kafka:" + myTopic + "? ... ")
.to(...)
...
此处的 from
URI 由一些在运行时解析的变量动态创建。在这种情况下,您必须指定组件和相关依赖项来加载到 集成中。