Transitive Dependency Resolution
推移的依存性をどう解決するかというトピック。
例えば、
プロジェクトがライブラリAに依存している
ライブラリAがライブラリαに依存している
ライブラリαはライブラリβに依存している
という時に、プロジェクトは推移的にライブラリαおよびライブラリβに依存していると見做すことができる。
こうした依存構造を許容する際、衝突が発生する場合がある。
例えば、
プロジェクトがライブラリAに依存している
ライブラリAはライブラリα-v1.0.0に依存している
プロジェクトがライブラリBに依存している
ライブラリBはライブラリα-v1.1.0に依存している
という場合、プロジェクトはライブラリα-v1.0.0とライブラリα-v1.1.0のいずれに依存すべきか、という状況である。
Strategy
Nearest Wins
---
MEMO
Gradleでは、バージョン競合を解決するための戦略として以下のものを用意しています。
Newest: もっとも新しいバージョンの依存関係を使用します。これはGradleのデフォルトの戦略で、バージョン間で上位互換性が保たれている限り、この戦略を選択するのが多くの場合適切です。
Fail: バージョンが競合した場合、ビルドを失敗させます。この戦略は、ビルドスクリプトで全てのバージョン競合をユーザーが明示的に解決することを強制します。 特定のバージョンを明示的に選択する方法についてはResolutionStrategyを参照してください。