所以,按顺序回答您的具体问题:
- 如果我使用 versionRange=1.4.0,是否会映射到 Version >= 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