4.4. Camel K インテグレーション依存関係の設定
Camel K は、インテグレーションコードの実行に必要なさまざまな依存関係を自動的に解決します。ただし、kamel run --dependency オプションを使用すると、実行時にコマンドラインに依存関係を明示的に追加できます。
以下のインテグレーションの例では Camel K の依存関係の自動解決が使用されます。
...
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
-trait dependencies.enabled=false のように、依存関係トレイトを無効にすると、依存関係の自動解決を無効することができます。ただし、これはほとんどの場合で推奨されません。
依存関係の種類
kamel run コマンドの -d フラグは柔軟で、複数の種類の依存関係をサポートします。
Camel 依存関係 は、次のように -d フラグを使用して直接追加できます。
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
依存関係がプライベートリポジトリーに属している場合は、このリポジトリーを定義する必要があることに注意してください。Maven の設定 を参照してください。
-d フラグと file:// 接頭辞を使用して、ローカル依存関係 を追加できます。
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
ディレクトリーの指定は再帰的に機能します。
この機能は、イメージレジストリー の正確なセットアップに依存していることに注意してください。
Jitpack の依存関係
依存関係が Maven リポジトリーで公開されていない場合、ランタイム統合環境にカスタム依存関係を提供する方法として Jitpack を使用できます。場合によっては、ルート定義だけでなく、統合動作を定義する際に使用する必要があるヘルパークラスやその他のクラスも含めると便利です。Jitpack を使用すると、リモートリポジトリーでホスティングされている Java プロジェクトをオンザフライでコンパイルし、生成されたパッケージを統合の依存関係として使用できます。
使用法は、Maven の依存関係について上記で定義したものと同じです。-d フラグを使用して追加できますが、今回は、使用しているプロジェクトリポジトリー (つまり、github) に期待される接頭辞を定義する必要があります。これは、repository-kind:user/repo/version 形式で提供する必要があります。例として、次を実行して Apache Commons CSV 依存関係を提供できます。
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
main ブランチを使用する場合は、version を省略できます。それ以外の場合は、プロジェクトリポジトリーで使用されるブランチまたはタグを表します。
動的 URI
Camel K は、常にすべての依存関係を検出するとはかぎりません。動的に URI を作成する場合、ロードするコンポーネントを Camel K に指示する必要があります (-d パラメーターを使用)。次のコードスニペットは、これを示しています。
DynamicURI.java
String myTopic = "purchases"
from("kafka:" + myTopic + "? ... ")
.to(...)
...
ここで、from URI は、実行時に解決されるいくつかの変数によって動的に作成されます。このような場合、Integration にロードするコンポーネントと関連する依存関係を指定する必要があります。