2013-02-20 14 views
23

Ich versuche zu verstehen, wie Gradle Abhängigkeit Versionen mit einem ‚+‘ Zeichen behandelt als 8.1 hier in Beispiel gesehen: http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.htmlGradle Abhängigkeit Versionen ‚+‘ Zeichen

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

Die Dokumentation besagt, dass diese bekommen eine Version von Junit> = 4.0. Wie würde man eine Version einer Abhängigkeit erhalten, die größer als (oder gleich) ist, sagen wir 5,10? Wäre es 5.10+ oder 5.1+? Ersteres scheint nicht korrekt zu funktionieren, letzteres jedoch. Wie würde ich eine Abhängigkeit von größer oder gleich 1,22 bekommen? 1.2+? In diesem Szenario, wenn Version 1.21 vorhanden ist und die neueste Version ist, möchte ich fehlschlagen, da ich größer als oder gleich 1,22 möchte, aber 1.2+ sucht nach> = 1.20. Wie kann ich das angeben? Ist das möglich? Ich kann nicht mehr Dokumentation dazu finden.

Edit: Ich neige dazu, es als 1.2+ entspricht 1.2([0-9]+). Ist das die richtige Art zu denken?

Antwort

22

In diesem Szenario Wenn Version 1.21 existiert und ist die neueste Version, ich scheitern möchte, da ich mehr will als oder gleich 1,22, aber 1.2+ wird> für = 1,20 aussehen. Wie kann ich das angeben? Ist das möglich?

Ich glaube nicht, dass es keine Dokumentation darüber, aber da Gradle ursprünglich Ivy unter der Haube für alle Abhängigkeitsmanagement-Funktionalität verwendet wird, nahm ich einen Blick auf die Ivy-Dokumentation in Bezug auf dynamische Versionen:

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

Es hat nur wenig mehr als die Gradle-Dokumentation. Ich habe versucht, in Gradle mit Ivy-Stil Version Bereichen experimentiert:

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

und überraschend scheint es manchmal Arbeit je nachdem, was der Versionsbereich ist. Im obigen Beispiel wird es in 1.2.17 aufgelöst.

Ich weiß, dass dies Ihre Fragen nicht vollständig beantwortet (was ich auch neugierig bin), aber hoffentlich gibt es ein paar Informationen für Sie.

+3

Ahhhh Ivy! Ich habe immer wieder nach Unterlagen für etwas gesucht. http://ant.apache.org/ivy/history/trunk/settings/version-matchers.html Ich nehme an, die Sub-Revision Matcher ist was passiert? –

1

Ich glaube, das Problem ist, dass Sie in Bezug auf Regex fälschlicherweise an das "+" denken. Es soll nicht als Regex-Ausdruckselement ("ein oder mehrere numerische Zeichen") gelesen werden, sondern als "die letzte verfügbare Version, in der jede der führenden SEMVER-Komponenten dem bereitgestellten Muster entspricht". Referenzen, warum dies nicht bevorzugt wird, um diese Notation zu verwenden, finden Sie unter: http://central.sonatype.org/articles/2014/Oct/28/enforcing-valid-dependency-versions/

Verwandte Themen