因此,要回答你的具体问题依次是:
- 如果我用versionRange = 1.4.0,将这个地图版本> = 1.4.0?
是。这正是规格说明它应该被解释的方式(见下文)。
- 这是一个有效的版本范围:versionRange = [1.0.0,0]
是的,这是一个有效的范围内,但它不会计算为你似乎什么期待。 它有效地评估为一组空的版本,所以没有版本会匹配这个表达式。
- 这将是一个有效的versionRange藏汉:versionRange = [1.0.0,0)?
同上 - 它是一个有效的版本范围,但它将评估为空集。
- 真理在哪里对所有这些问题的实际来源?我似乎无法找到它
的规格可从OSGi Alliance's主页: http://www.osgi.org/Release4/Download(对于R4规范)
下面是从覆盖了OSGi R4核心规范的摘录版本范围:
版本范围
一版本范围使用数学间隔符号来描述一系列版本。参见[31]区间符号的数学公约。
一个版本范围的语法是:
version-range ::= interval | atleast
interval ::= ('[' | '(') floor ',' ceiling (']' | ')')
atleast ::= version
floor ::= version
ceiling ::= version
如果版本范围被规定为单个版本,它必须被解释为范围[version,
∞ )
。非指定版本范围的默认值为0,它映射到[0.0.0,
∞ )
。
请注意,在版本范围内使用逗号需要用双引号括起来。例如:
Import-Package: com.acme.foo;version="[1.23, 2)",
com.acme.bar;version="[4.0, 5.0)"
在下面的表中,在左侧列中的每个指定的范围内,一个版本x被认为是范围的成员,如果在右侧的谓词列是真的。
[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