4.4. 配置 Camel K 集成依赖项


Camel K 会自动解决运行集成代码所需的各种依赖项。但是,您可以使用 kamel run --dependency 选项在运行时显式添加命令行的依赖项。

以下示例集成使用 Camel K 自动依赖项解析:

...
  from("imap://admin@myserver.com")
    .to("seda:output")
...
Copy to Clipboard Toggle word wrap

由于此集成有一个以 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
    Copy to Clipboard Toggle word wrap
注意

您可以通过禁用 dependencies trait: -trait dependencies.enabled=false 来禁用自动依赖项解析。但是,多数情况下不建议这样做。

依赖项的类型

kamel run 命令的 -d 标志非常灵活,并支持多种依赖项。

可以使用 -d 标志直接添加 Camel 依赖项,如下所示:

kamel run -d camel:http Integration.java
Copy to Clipboard Toggle word wrap

在这种情况下,依赖项将使用正确的版本添加。请注意,指定 Camel 依赖项的标准表示法为 camel:xxx,而 kamel 也接受 camel-xxx 以实现可用性。

您可以使用 -d 标志、mvn 前缀和 maven 协调来添加 外部依赖项

kamel run -d mvn:com.google.guava:guava:26.0-jre Integration.java
Copy to Clipboard Toggle word wrap

请注意,如果您的依赖项属于私有存储库,则必须定义此存储库。请参阅 配置 maven

您可以使用 -d 标志和 file:// 前缀来添加 本地依赖项

kamel run -d file://path/to/integration-dep.jar Integration.java
Copy to Clipboard Toggle word wrap

然后,在集成中可以访问 integration-dep.jar 的内容供您使用。

您还可以指定要挂载到正在运行的容器中的数据文件:

kamel run -d file://path/to/data.csv:path/in/container/data.csv Integration.java
Copy to Clipboard Toggle word wrap

指定目录将递归工作。

请注意,这个功能依赖于 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
Copy to Clipboard Toggle word wrap

我们支持最重要的公共代码存储库:

github:user/repo/version
gitlab:user/repo/version
bitbucket:user/repo/version
gitee:user/repo/version
azure:user/repo/version
Copy to Clipboard Toggle word wrap

当使用 main 分支时,可以省略 version。否则,它将代表项目仓库中使用的分支或标签。

动态 URI

Camel K 并不总是发现所有依赖项。当您动态创建 URI 时,您必须指示 Camel K 哪个组件要加载(使用 -d 参数)。以下代码片段演示了这一点。

DynamicURI.java

String myTopic = "purchases"
from("kafka:" + myTopic + "? ... ")
    .to(...)
...
Copy to Clipboard Toggle word wrap

此处的 from URI 由一些在运行时解析的变量动态创建。在这种情况下,您必须指定组件和相关依赖项来加载到 集成中。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat