推移的な依存関係を扱うにはどうすればよいですか ?

Spring Cloud Contract プラグインは、スタブ jar を作成するタスクを追加します。発生する問題の 1 つは、スタブを再利用するときに、そのスタブの依存関係をすべて誤ってインポートしてしまう可能性があることです。Maven アーティファクトをビルドする場合、次のように、いくつかの異なる jar がある場合でも、すべて 1 つの pom.xml ファイルを共有します。

├── producer-0.0.1.BUILD-20160903.075506-1-stubs.jar
├── producer-0.0.1.BUILD-20160903.075506-1-stubs.jar.sha1
├── producer-0.0.1.BUILD-20160903.075655-2-stubs.jar
├── producer-0.0.1.BUILD-20160903.075655-2-stubs.jar.sha1
├── producer-0.0.1.BUILD-SNAPSHOT.jar
├── producer-0.0.1.BUILD-SNAPSHOT.pom
├── producer-0.0.1.BUILD-SNAPSHOT-stubs.jar
├── ...
└── ...

推移的な依存関係で問題が発生しないように、これらの依存関係を操作するには 3 つの方法があります。

  • すべてのアプリケーションの依存関係をオプションとしてマークする

  • スタブ用に別の artifactid を作成します

  • コンシューマー側の依存関係を除外する

すべてのアプリケーションの依存関係をオプションとしてマークするにはどうすればよいですか ?

producer アプリケーションですべての依存関係をオプションとしてマークした場合、別のアプリケーションに producer スタブを含めるとき (またはその依存関係がスタブランナーによってダウンロードされるとき)、すべての依存関係はオプションであるため、ダウンロードしてもらう。

スタブ用に個別の artifactid を作成するにはどうすればよいですか ?

別途 artifactid を作成する場合は、任意の方法でセットアップできます。例: 依存関係をまったく持たないことに決めるかもしれません。

コンシューマー側の依存関係を除外するにはどうすればよいですか ?

コンシューマーとして、スタブ依存関係をクラスパスに追加すると、不要な依存関係を明示的に除外できます。