Quindi, per rispondere alle vostre domande concrete:
- Se ho usato versionRange = 1.4.0, sarebbe questo mappa per la versione> = 1.4.0?
Sì. Questo è esattamente il modo in cui le specifiche dicono che dovrebbe essere interpretato (vedi sotto).
- È questo un intervallo versione valida: versionRange = [1.0.0,0]
Sì, è un intervallo valido, ma non valuterà a quello che ti sembra di essere in attesa. Valuta in modo efficace un insieme vuoto di versioni, quindi nessuna versione corrisponderà a questa espressione.
- Questo sarebbe un versionRange valida Aswell: versionRange = [1.0.0,0)?
Come sopra - si tratta di una gamma versione valida, ma si valuterà a un insieme vuoto.
- Dov'è la vera fonte della verità per tutte quelle domande? Mi sembra di essere in grado di trovare
Le specifiche sono disponibili su OSGi Alliance's home page da: http://www.osgi.org/Release4/Download (per R4 spec)
Di seguito è riportato un estratto dalla specifica nucleo OSGi R4 che copre il intervalli di versioni:
Versione gamme
A la gamma di versioni descrive una gamma di versioni che utilizzano una notazione a intervalli matematici. Vedi [31] Convenzione matematica per la notazione a intervalli.
La sintassi di un intervallo versione è:
version-range ::= interval | atleast
interval ::= ('[' | '(') floor ',' ceiling (']' | ')')
atleast ::= version
floor ::= version
ceiling ::= version
Se un intervallo versione viene specificato come un'unica versione, deve essere interpretato come intervallo [version,
∞ )
. Il valore predefinito per un intervallo di versione non specificato è 0, che corrisponde a [0.0.0,
)
.
Si noti che l'uso di una virgola nell'intervallo di versione richiede che sia racchiuso tra virgolette. Ad esempio:
Import-Package: com.acme.foo;version="[1.23, 2)",
com.acme.bar;version="[4.0, 5.0)"
Nella tabella che segue, per ciascun intervallo specificato nella colonna di sinistra, una versione x è considerato un membro della gamma se il predicato nella destra la colonna è vera
[1.2.3, 4.5.6) | 1.2.3 <= x < 4.5.6
[1.2.3, 4.5.6] | 1.2.3 <= x <= 4.5.6
(1.2.3, 4.5.6) | 1.2.3 < x < 4.5.6
(1.2.3, 4.5.6] | 1.2.3 < x <= 4.5.6
1.2.3 | 1.2.3 <= x