17

Czy istnieje prosty sposób na uzyskanie gradle aktualizacji zależności do ich najnowszej dostępnej wersji?Jak zaktualizować zależności Gradle do najnowszej wersji

Na kompilacji powtarzalności wszystkie moje zależności są definiowane z numerem wersji, jak to w moim pliku build.gradle:

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

Okresowo chcę zaktualizować każdy pakiet do ich najnowszej wersji. Zazwyczaj jest to pierwsza rzecz, którą robię dla nowego sprintu po wydaniu.

To prawdziwy ból robiący to ręcznie dla każdej paczki. Najlepiej byłoby, gdyby polecenie zaktualizowało plik build.gradle, ale przynajmniej polecenie, które wypisze, który pakiet wymaga aktualizacji i jaki jest numer najnowszej wersji.

W rubinowej krainie uruchomiłbym aktualizację pakietu bundler.

+0

ja napisałem narzędzie Pythona do zaktualizowania wersji zależnością, można spróbować. https://github.com/Jintin/andle – Jintin

+1

Możliwy duplikat [Jak sprawdzić, czy zależność gradle ma nową wersję] (https://stackoverflow.com/questions/28683327/how-to-check-if-gradle- dependency-has-new-version) – Suhaib

+0

@Suhaib ma rację, https://stackoverflow.com/a/28683488/2763883 – patrickfdsouza

Odpowiedz

5

To nie jest naprawdę dobra praktyka, ponieważ biblioteki mogą zawierać zmiany, które mogą złamać twój kod.

Powszechnym "tolerowane" składnię

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

byłoby jak

compile 'namespace:package:1.0.+' 

rozważa rewizji jest wykorzystywany przez autorów bibliotecznych jak poprawek i ulepszeń aktualizuje

Uwaga: Po prostu to zrobiłem i mogłeś zrobić

compile 'namespace:package:+' 

Edit:
Proof Of Concept mojego latest comment może chcesz przetestować.
Zostało to zrobione w 5 minut, więc nie oczekuj, że będzie idealny ani elastyczny.

+1

Tak, rozumiem, że możesz zastąpić część wersji znakiem +, aby rozwiązać najnowszą wersję w czasie kompilacji, ale która zepsuje kompilację. Chcę polegać na określonej wersji, co jest najlepszą praktyką i od czasu do czasu aktualizować każdy pakiet. –

+0

Aktualizacja określonej wersji? Major, minor lub korekta? "kompilacja" przestrzeń nazw: pakiet: 1.0. + ''Zaktualizowałaby się do najnowszej wersji jako" kompilacja "przestrzeń nazw: pakiet: 1. +" 'Zaktualizowałaby się do najnowszej wersji podrzędnej i kompilacji' namespace: pakiet: + '' do najnowszej wersji główny. – Gorcyn

+0

Nie chcę dodawać plusa, ponieważ oznacza to, że za każdym razem, gdy uruchamiam kompilację, mogę uzyskać inną wersję biblioteki. Przez większość procesu programowania wersja musi pozostać taka sama, aby można ją było dokładnie przetestować. –

17

To wszystko, co udało mi się wymyślić. Z przyjemnością przyjmuję inną odpowiedź, jeśli istnieje mniej ręczna metoda robienia tego.

  1. W Android studio zastąpić każdą wersję zależnościach z plusem przykład: compile 'namespace:package1:+'

  2. Sync lub zbudować projekt, który spowoduje wszystkie zależności, które należy rozwiązać, aby ich najnowszej wersji.

  3. W Android Studio umieścić kursor na każdej linii w zależności build.gradle i naciśnij alt + enter menu wyskakuje i można wybrać Wymień konkretnej wersji

+4

Zobacz [wtyczka-wersje-wtyczki] (https://github.com/ben-manes/gradle-versions-plugin). –

+0

@Ben Manes: To powinna być akceptowana odpowiedź. Świetna wtyczka, dobra robota! –

+0

Ta odpowiedź jest najlepszym sposobem sprawdzenia dostępności aktualizacji! Pamiętaj, aby zbudować projekt w kroku 2, bo inaczej to nie zadziała. –

1

Dodaj do build.gradle :

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

Następnie można zrobić gradle dependencyUpdates dostać raport o nowych wersjach.W przeciwieństwie do tytułowej wtyczki Maven, nie wydaje się, aby był jeszcze automatyczny proces aktualizowania build.gradle.

Więcej dokumentacja: https://github.com/ben-manes/gradle-versions-plugin