2017-09-29 2 views
2

Ich arbeite mit einem Java-Projekt, das eine Bibliothek verwendet, die eine Abhängigkeit von einer Bibliothek mit einer Sicherheitsanfälligkeit aufweist. Leider enthält die aktualisierte Version der anfälligen Bibliothek nicht die gleiche Gruppe. Grundsätzlich hängt die Bibliothek org.reallyuseful.library:usefulstuff:1.0 von org.vulnerable.dependency:dependency:1.0 ab, aber die Sicherheitslücke wurde in org.secure.dependency:dependency:1.1 behoben.Wie ersetze ich eine Abhängigkeit einer Abhängigkeit in Gradle?

In Gradle, wie sage ich usefulstuff:1.0 zu org.secure.dependency:dependency:1.1 statt org.vulnerable.dependency:dependency:1.0 zu verwenden?

Antwort

2

Sie können in Ihrer Build-Datei explizit eine Abhängigkeit von org.secure.dependency:dependency:1.1 wie implementation("org.secure.dependency:dependency:1.1") deklarieren. Die von Ihnen angegebene Abhängigkeitsversion hat Vorrang vor der transitiven Abhängigkeit.

Eine weitere Option könnte sein, eine exclude Regel angeben, um sicherzustellen, dass die Abhängigkeit nicht in (example sehe) gebracht wird

Ich denke, die besten Muster würden uns die Werkzeuge aus dem Dependency Management Abschnitt des Anwenders nutzen führen. In diesem Fall sollten Sie die API resolutionStrategy verwenden können. Sie können die gewünschte Abhängigkeit für die ursprünglich angeforderte ersetzen.

In diesem Beispiel wird eine Auflösungsregel für jeden 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") 
    } 
    } 
} 

Die Gradle Bedienungsanleitung auch ein example hat, wo nur die Version geändert wird, und ein example, die auf die obige Snippet sehr ähnlich ist (und Ihr Anwendungsfall).

Verwandte Themen