2013-02-20 14 views
23

Próbuję zrozumieć, jak Gradle obsługuje wersje zależnościami ze znakiem „+”, jak widać na przykładzie 8.1 tutaj: http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.htmlGradle wersje zależnościami znak „+”

testCompile group: 'junit', name: 'junit', version: '4.+ 

Dokumentacja mówi, że to dostanie wersja junit> = 4.0. W jaki sposób uzyskać wersję zależności większą niż (lub równą), powiedzmy, 5.10? Czy byłby to 5.10+ lub 5.1+? Ten pierwszy wydaje się nie działać poprawnie, ale drugi robi. Jak uzyskać zależność większą lub równą 1,22? 1.2+? W tym scenariuszu, jeśli wersja 1.21 istnieje i jest najnowszą wersją, chciałbym zawieść, ponieważ chcę mieć wartość większą lub równą 1,22, ale 1.2+ będzie szukać> = 1,20. Jak mogę to określić? czy to możliwe? Nie mogę znaleźć więcej dokumentacji na ten temat.

Edycja: mam tendencję do myślenia o tym, jak 1.2+ jest odpowiednikiem 1.2([0-9]+). Czy to jest właściwy sposób myślenia?

Odpowiedz

22

W tym scenariuszu, jeśli wersja 1.21 istnieje i jest ostatnią wersję, ja chciałoby się niepowodzeniem, ponieważ chcę większy lub równy 1,22, ale 1.2+ będzie szukać> = 1,20. Jak mogę to określić? czy to możliwe?

nie sądzę istnieje dokumentacja na ten temat, ale ponieważ Gradle pierwotnie używane Ivy pod maską dla wszystkich jego funkcji zarządzania zależność, wziąłem zapoznać się z dokumentacją dotyczącą Ivy dynamicznych wersjach:

http://ant.apache.org/ivy/history/latest-milestone/ivyfile/dependency.html

Ma tylko trochę więcej niż dokumentacja Gradle. Próbowałem eksperymentować w Gradle z zakresów wersji Ivy-style:

compile group: 'log4j', name: 'log4j', version: '[1.2.12,1.2.17]' 

i zaskakująco wydaje czasami pracy w zależności od tego, co jest zakres wersji. W powyższym przykładzie jest to 1.2.17.

Wiem, że to nie w pełni odpowiada na twoje pytania (które również mnie interesują), ale mam nadzieję, że dostarczą ci trochę informacji.

+3

Ahhhh Ivy! Szukałem czegoś na ten temat. http://ant.apache.org/ivy/history/trunk/settings/version-matchers.html Zakładam, że macierz sub-rewizji jest obecna? –

1

Myślę, że problem polega na tym, że nieprawidłowo myślisz o "+" pod względem regex. Nie ma być odczytywany jako element wyrażeń regularnych ("jeden lub więcej znaków numerycznych"), ale raczej jako "najnowsza dostępna wersja, w której każdy z wiodących komponentów SEMVER jest zgodny z podanym wzorcem". Odsyłacze na temat tego, dlaczego nie jest to korzystne, aby korzystać z tej notacji można znaleźć pod adresem: http://central.sonatype.org/articles/2014/Oct/28/enforcing-valid-dependency-versions/

Powiązane problemy