Eine Ihrer Abhängigkeiten besteht darin, die Guavenversion zum Aktualisieren zu zwingen. Verwenden Sie gradle dependencies
diese Option, um zu ermitteln, welche Bibliothek Ihre Version entfernt.
Das Problem ist, dass eine andere Bibliothek möglicherweise nicht ordnungsgemäß funktioniert, wenn Sie die Verwendung von 14.0.1 erzwingen. Können Sie nicht einfach die Version 17.0 als Ihre Abhängigkeit verwenden?
Anstatt einzelne Versionsnummern im build.gradle zu verwalten, verwende ich eine dependencies.gradle-Datei, die eine Zuordnung der Versionsnummern enthält, und ziehe diese in das build.gradle. Auf diese Weise muss ich nur die einzelne Guavenversion pflegen. Ihr Beispiel wird also sein:
dependencies.gradle
ext {
ver = [
guava: '14.0.1'
]
}
und dann in der build.gradle-Datei können Sie haben:
apply from: "dependencies.gradle"
dependencies {
compile group: 'com.google.guava', module: 'guava', version: ver.guava
compile group: 'com.google.guava', module: 'guava-gwt', version: ver.guava
}
Wenn ich dann zu 17.0 wechseln möchte, muss ich nur die dependencies.gradle ändern.
Ich bin auch ein definitiver Fan davon, transitive Abhängigkeiten mit false auf false zu setzen
configurations.compile { transitive = false }
Auf diese Weise werden zur Kompilierungszeit einige Abhängigkeiten nicht entfernt, obwohl zur Laufzeit möglicherweise ein Problem auftritt, wenn die Räumungsbibliothek nicht vollständig abwärtskompatibel ist. Seien wir ehrlich, wenn Sie den Code schreiben, sollten Sie wissen, welche Bibliotheken Sie verwenden, und Sie sollten Ihre Abhängigkeiten explizit angeben. Es schützt Sie vor einer Ihrer Abhängigkeiten, die Sie aktualisieren und durcheinander bringen.