So aktualisieren Sie Gradle-Abhängigkeiten auf ihre neueste Version

Lesezeit: 5 Minuten

Gibt es eine einfache Möglichkeit, Gradle dazu zu bringen, Abhängigkeiten auf die neueste verfügbare Version zu aktualisieren?

Für die Build-Reproduzierbarkeit sind alle meine Abhängigkeiten mit einer Versionsnummer wie dieser in meiner build.gradle-Datei definiert:

dependencies {
    compile 'namespace:package1:version'
    compile 'namespace:package2:version'
    compile 'namespace:package3:version'
}

In regelmäßigen Abständen möchte ich jedes Paket auf die neueste Version aktualisieren. Typischerweise ist dies das erste, was ich für einen neuen Sprint mache, nachdem ich ein Release erstellt habe.

Es ist ein echter Schmerz, dies manuell für jedes Paket zu tun. Idealerweise hätte ich gerne einen Befehl, um die build.gradle-Datei für mich zu aktualisieren, aber zumindest einen Befehl, der ausgibt, welches Paket aktualisiert werden muss und wie die neueste Versionsnummer lautet.

In Ruby Land würde ich Bundler Update ausführen.

  • Ich habe ein Python-Tool geschrieben, um die Version der Abhängigkeit zu aktualisieren, Sie können es versuchen. github.com/Jintin/andle

    – Jintin

    4. Januar 2016 um 14:04 Uhr

  • Mögliches Duplikat von So überprüfen Sie, ob die Gradle-Abhängigkeit eine neue Version hat

    – Suhaib

    13. Juli 2017 um 5:14 Uhr

  • @Suhaib hat recht, stackoverflow.com/a/28683488/2763883

    – patrickfdsouza

    8. September 2017 um 6:12 Uhr

  • Sie können diese Website verwenden und nach der neuesten Version jeder Abhängigkeit suchen: gradleplease.appspot.com

    – Jay Patel

    19. Januar 2018 um 11:32 Uhr


Das ist alles, was ich mir einfallen lassen konnte. Ich werde gerne eine andere Antwort akzeptieren, wenn es eine weniger manuelle Methode dafür gibt.

  1. In Android Studio ersetze ich jede Abhängigkeitsversion durch ein Plusbeispiel: compile 'namespace:package1:+'

  2. Synchronisieren oder erstellen Sie das Projekt, wodurch alle Abhängigkeiten auf ihre neueste Version aufgelöst werden.

  3. Platzieren Sie in Android Studio den Cursor auf jeder Abhängigkeitszeile in build.gradle und drücken Sie Alt+Eingabe Ein Menü erscheint und Sie können auswählen Durch spezifische Version ersetzen

  • Siehe die Gradle-Versions-Plugin.

    – Ben Mähnen

    8. Juni 2015 um 13:33 Uhr

  • @Ben Manes: Dies sollte als Antwort akzeptiert werden. Tolles Plugin, gute Arbeit!

    – Lukas Novak

    29. Juli 2015 um 10:05 Uhr

  • Diese Antwort ist der beste Weg, um nach Updates zu suchen! Denken Sie daran, das Projekt in Schritt 2 zu erstellen, sonst funktioniert es nicht.

    – Ray Li

    22. Juli 2017 um 14:45 Uhr

  • In meinem Fall lädt die Synchronisierung nicht unbedingt die neueste Version herunter. Es scheint, dass für den Cache eine Zeitüberschreitung festgelegt ist, bis die Serverversion erneut überprüft wird

    – Marian Klühspies

    27. September 2017 um 17:00 Uhr

  • Ich würde sagen, das ist eine ziemlich riskante Methode. Sie kontrollieren nicht mehr, welche Version Sie lokal installiert haben, was Ihre Teamkollegen verwenden und was zB auf dem Server sein wird, weil kurz vor der Veröffentlichung ein Bibliotheks-Update kommt. Ich weiß, dass dies eine ähnliche Lösung wie ^ in JavaScript-Frameworks ist, aber dort haben wir eine Paketsperrdatei, die steuert, welche Version genau im gesamten Team / in den Umgebungen usw. verwendet wird.

    – Filip Kubala

    18. März um 15:13 Uhr

Hinzufügen build.gradle:

plugins {
  id 'com.github.ben-manes.versions' version '0.17.0'
}

Dann können Sie tun gradle dependencyUpdates um einen Bericht über neue Versionen zu erhalten. Im Gegensatz zum gleichnamigen Maven-Plugin scheint es keine Möglichkeit zu geben, das automatisch zu aktualisieren build.gradle noch.

Weitere Dokumentation: https://github.com/ben-manes/gradle-versions-plugin

  • Es gibt jetzt eine Möglichkeit, Abhängigkeiten automatisch zu aktualisieren: github.com/patrikerdes/gradle-use-latest-versions-plugin

    – merst

    26. März 2019 um 23:44 Uhr

  • @mernst Ihre Lösung ist die beste, es sollte eine separate Antwort sein, um die Sichtbarkeit zu haben, die sie verdient

    – Marco Lacković

    28. März um 16:03 Uhr

Benutzeravatar von Gorcyn
Gorcyn

Dies ist keine wirklich gute Vorgehensweise, da Bibliotheken Änderungen enthalten können, die Ihren Code beschädigen können.

Eine gängige “tolerierte” Syntax für

compile 'namespace:package:major_version.minor_version.revision'

wäre wie

compile 'namespace:package:1.0.+'

in Anbetracht Revision wird von den Bibliotheksautoren als Fehlerbehebung und Verbesserungsupdates verwendet

Hinweis: Ich habe das gerade getan und Sie könnten es tun

compile 'namespace:package:+'

Bearbeiten:
EIN Konzeptioneller Beweiß meines letzten Kommentars können Sie testen.
Dies wurde in 5 Minuten gemacht, also erwarten Sie nicht, dass es perfekt oder flexibel ist.

  • Ja, ich verstehe, dass Sie einen Teil der Version durch ein + ersetzen können, um die neueste Version zur Build-Zeit aufzulösen, aber das bricht die Build-Reproduzierbarkeit. Ich möchte mich auf eine bestimmte Version verlassen, wie es bewährt ist, und gelegentlich jedes Paket aktualisieren.

    – Jared Kells

    16. Februar 2015 um 10:33 Uhr

  • Ein Update auf eine bestimmte Version ? Major, Minor oder Revision? compile 'namespace:package:1.0.+' würde auf die neueste Version aktualisieren als compile 'namespace:package:1.+' würde auf die neueste Nebenversion aktualisieren und compile 'namespace:package:+' zum neuesten großen.

    – Gorcyn

    16. Februar 2015 um 10:37 Uhr

  • Ich möchte kein Pluszeichen setzen, da dies bedeutet, dass ich jedes Mal, wenn ich den Build ausführe, eine andere Version der Bibliothek erhalten könnte. Während des größten Teils des Entwicklungsprozesses muss die Version gleich bleiben, damit sie gründlich getestet werden kann.

    – Jared Kells

    16. Februar 2015 um 10:41 Uhr

  • Normalerweise möchte ich nach einer Veröffentlichung jede Bibliothek auf ihre neueste Version aktualisieren. Dies wird alle paar Monate durchgeführt. Die Abhängigkeitstools, die ich in anderen Sprachen verwende, unterstützen dies. NuGet und Bundler sind Beispiele.

    – Jared Kells

    16. Februar 2015 um 10:43 Uhr

  • Ein Skript, das sich ändern würde namespace:package:+dann gradlew --refresh-dependencies dann namespace:package:x.y.z wobei x, y und z aus .idea/libraries/*.xml gelesen werden. Ein ziemlich interessantes Feature.

    – Gorcyn

    16. Februar 2015 um 10:53 Uhr

Paulo Linhares - Benutzeravatar von Packapps
Paulo Linhares – Packapps

Darunter leide ich auch. Und der beste Weg, Abhängigkeiten zu überprüfen, auch manuell, besteht darin, die Projektstruktur zu durchsuchen und nach dem Namen der Abhängigkeit zu suchen und zu sehen, ob es eine neuere Version gibt.

Das Problem, dass diese Abfrage nur nach den im Maven-Repository vorhandenen Abhängigkeiten sucht. Zumindest gilt es bereits für Googles.

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Hinweis: Wenn Sie die Abhängigkeit mit der neuen Version hinzufügen, wird dadurch eine Duplizität in Ihrem App Gradle hinzugefügt, also löschen Sie unbedingt die alte Abhängigkeitszeile.

###################

Eine weitere mögliche schnelle Lösung ist über die Befehlszeile:

./gradlew app:dependencies

Dies erzeugt eine Ausgabe wie die folgende. Beachten Sie, dass das Sternchen auf eine mögliche neue vorhandene Version hinweist.

Geben Sie hier die Bildbeschreibung ein

1393590cookie-checkSo aktualisieren Sie Gradle-Abhängigkeiten auf ihre neueste Version

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy