Por lo tanto, para responder a sus preguntas concretas con el fin de:
- Si usara versionRange = 1.4.0, haría este mapa a la versión> = 1.4.0?
Sí. Esta es exactamente la forma en que las especificaciones dicen que debe interpretarse (ver más abajo).
- ¿Es esta una gama versión válida: versionRange = [1.0.0,0]
Sí, es un rango válido, pero no va a evaluar en qué pareces estar esperando. Efectivamente evalúa a un conjunto vacío de versiones, por lo que ninguna versión coincidirá con esta expresión.
- ¿Sería ésta una versionRange válida Aswell: versionRange = [1.0.0,0)?
Igual que el anterior - se trata de una gama versión válida, pero se evaluará como un conjunto vacío.
- ¿Dónde está la fuente real de la verdad para todas esas preguntas? Parece que soy incapaz de encontrarlo
Las especificaciones están disponibles en OSGi Alliance's página principal desde: http://www.osgi.org/Release4/Download (para R4 especificaciones)
A continuación se muestra un extracto de la especificación básica OSGi R4 que cubre el rangos de versión:
Versión rangos
A El rango de versión describe un rango de versiones usando una notación de intervalo matemático. Ver [31] Convención Matemática para la Notación por Intervalos.
La sintaxis de un intervalo de versiones es:
version-range ::= interval | atleast
interval ::= ('[' | '(') floor ',' ceiling (']' | ')')
atleast ::= version
floor ::= version
ceiling ::= version
Si se especifica un intervalo de versiones como una sola versión, debe ser interpretada como la gama [version,
∞ )
. El valor predeterminado para un rango de versión no especificado es 0, que se asigna a [0.0.0,
∞ )
.
Tenga en cuenta que el uso de una coma en el rango de versión requiere que se incluya entre comillas dobles. Por ejemplo:
Import-Package: com.acme.foo;version="[1.23, 2)",
com.acme.bar;version="[4.0, 5.0)"
En la tabla siguiente, para cada rango especificado en la columna de la izquierda, una versión x se considera que es un miembro de la gama si el predicado en la mano derecha la columna es verdadera
[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