2017-09-29 19 views
2

私は、セキュリティ上の脆弱性を持つライブラリに依存するライブラリを使用しているJavaプロジェクトを使用しています。残念ながら、脆弱なライブラリの更新版には同じグループがありません。基本的には、ライブラリorg.reallyuseful.library:usefulstuff:1.0org.vulnerable.dependency:dependency:1.0に依存しますが、脆弱性はorg.secure.dependency:dependency:1.1に修正されています。gradleの依存関係の依存関係をどのように置き換えるのですか?

Gradleでは、usefulstuff:1.0にの代わりにorg.secure.dependency:dependency:1.1を使用するように指定するにはどうすればよいですか?

答えて

2

org.secure.dependency:dependency:1.1の依存関係を、ビルドファイルのimplementation("org.secure.dependency:dependency:1.1")に明示的に宣言することができます。指定した依存関係のバージョンは、推移的な依存よりも優先されます。

は、私は最高のパターンは、我々はユーザーの Dependency Managementセクションから提供されているツールを使用すると思う( exampleを参照)別のオプションは、依存関係が持ち込まれていないことを確認する excludeルールを指定することがあるかもしれませんガイド。この場合、 resolutionStrategy APIを使用できるはずです。最初に要求された依存関係を、必要な依存関係に置き換えることができます。

この例では、すべてのConfigurationの解決ルールを設定:

configurations.all { 
    resolutionStrategy.eachDependency { DependencyResolveDetails details -> 
    if (details.requested.group == "org.vulnerable.dependency" 
     && details.requested.name == "dependency" 
     && details.requested.version == "1.0") { 
     details.useTarget("org.secure.dependency:dependency:1.1") 
    } 
    } 
} 

のGradleユーザガイドはまた、唯一のバージョンが変更され、example上記断片に非常に類似している(あなたさexampleを有します使用事例)。

関連する問題