2017-12-12 15 views
0

の異なるバージョンを使用して、各一つは、私はカフカのクライアントのためにヘルパークラスを書いていると仮定します。ヘルパークラスは、kafkaクライアントのアグノスティックからバージョンです(APIの変更はありません)。私の質問は、そのような状況のためのJavaのベストプラクティスは何ですか、私は私のヘルパークラスを含む瓶を構築することはできませんそれは、カフカのいくつかのバージョンへの依存関係を含む必要があるため、これは同じヘルパークラス2つの異なるプロジェクト、1つはkafka:0.9.0を使用し、もう1つはkafka:1.0.0を使用します。ヘルパークラスが別のJavaプロジェクト間で共有、X

ありがとうございます。この状況で

+1

なぜあなたではないだろうか?ヘルパークラスを含むjarをビルドすると、ヘルパークラスを含むjarが構築されます。カフカクライアントクラスではありません。だから、あなたの瓶のユーザーはあなたの瓶と、彼らが望むどのカフカクライアントのバージョンを使用するだけです。 –

+0

ヘルパークラスにはkafkaクラスへの参照が含まれているため、kafkaクライアント依存関係を指定せずにjarファイルを作成することはできません。 –

+1

スコープ '提供済み 'の従属関係を定義しますか? – khmarbaise

答えて

1

は、ヘルパーの依存関係で、私は私がサポートすることを選択し、彼らが望むならば、消費者が明示的に異なるバージョンに引っ張ってくることを期待する最小値を指定します。

追加するEDITED:

別のオプションは、providedscopeでサポートされる最小バージョンを設定することです。これは、すべての消費者が、カフカのコードをコンパイルするために、カフカのバージョンを引き出す必要があることを意味します。

Mavenの依存関係のスコープのドキュメント: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

+0

提供するのは確かに良い方法だと思われます。ライブラリをコンパイルして公開することができます。他のプロジェクトでは、必要なKafkaのバージョンを定義します。このような過渡的な依存関係がデフォルトで利用可能になる古典的な依存性とは異なり、他のプロジェクトにKafka依存関係を定義することは*必須*になるという制限があります –

関連する問題