如何在 OSGi 中导入大于或等于 1.0.0 的任何版本的包?
How can I import a package at any version greater than or equal to 1.0.0 in OSGi?
我正在尝试导入 OSGi 包,任何大于或等于 1.0.0
的版本均有效。基本上,我只是想确保我没有得到任何 0.x
版本,但除此之外,任何版本都是可以接受的。我如何允许 1.0.0
(含)和无穷大(无界)之间的所有版本。
我试过以下方法:
com.mypackage.example;version="[1.0.0,)"
com.mypackage.example;version="[1,)"
com.mypackage.example;version="[1.0.0]"
com.mypackage.example;version="[1.0.0)"
我也看过这个问题:OSGI Valid Version Ranges。但它似乎引用了 Java API 而不是 MANIFEST.MF
Import-Package
header.
要为软件包指定 [1.0.0,infinity)
的版本范围,只需在引号中包含版本号:
com.mypackage.example;version="1.0.0"
这将允许任何大于或等于 1.0.0
的版本。
由于指定单个版本号意味着 unbounded/infinite 范围,您可能想知道如何导入包的特定版本(而不是其他版本)。您可以通过指定从版本到自身的范围来做到这一点:
com.mypackage.example;version="[1.3.1,1.3.1]"
所有这些信息都来自 OSGi Concepts 上的 Eclipse 文档(特别是 Versioning 部分)。
已经有一个答案解释了如何做到这一点,但我有责任说 没有人应该这样做。
为包导入设置上限是 API 进化和语义版本控制的重要组成部分。如果您声称可以使用所有未来版本,那么您最终会被 API 更改破坏。
将 Export-Package
的版本从 1.x
移动到 2.0
意味着已经进行了 重大更改 。您所依赖的方法可能不再存在,或者行为可能有所不同。说您将与 API.
的所有未来版本兼容是不安全的
导入版本 1.0
API 时使用的正确版本范围是 "[1,2)"
如果您是消费者或 "[1,1.1)"
如果您是提供者。
消费者是 API 的 "typical users",例如如果我写一个 Servlet 我就是 "consumer" 的 Servlet API。提供者是为 API(例如 TomCat)提供支持实现的人。请注意,这与说实现接口使您成为提供者不同 - 使用 Servlet API 需要您实现 Servlet 接口。
我正在尝试导入 OSGi 包,任何大于或等于 1.0.0
的版本均有效。基本上,我只是想确保我没有得到任何 0.x
版本,但除此之外,任何版本都是可以接受的。我如何允许 1.0.0
(含)和无穷大(无界)之间的所有版本。
我试过以下方法:
com.mypackage.example;version="[1.0.0,)"
com.mypackage.example;version="[1,)"
com.mypackage.example;version="[1.0.0]"
com.mypackage.example;version="[1.0.0)"
我也看过这个问题:OSGI Valid Version Ranges。但它似乎引用了 Java API 而不是 MANIFEST.MF
Import-Package
header.
要为软件包指定 [1.0.0,infinity)
的版本范围,只需在引号中包含版本号:
com.mypackage.example;version="1.0.0"
这将允许任何大于或等于 1.0.0
的版本。
由于指定单个版本号意味着 unbounded/infinite 范围,您可能想知道如何导入包的特定版本(而不是其他版本)。您可以通过指定从版本到自身的范围来做到这一点:
com.mypackage.example;version="[1.3.1,1.3.1]"
所有这些信息都来自 OSGi Concepts 上的 Eclipse 文档(特别是 Versioning 部分)。
已经有一个答案解释了如何做到这一点,但我有责任说 没有人应该这样做。
为包导入设置上限是 API 进化和语义版本控制的重要组成部分。如果您声称可以使用所有未来版本,那么您最终会被 API 更改破坏。
将 Export-Package
的版本从 1.x
移动到 2.0
意味着已经进行了 重大更改 。您所依赖的方法可能不再存在,或者行为可能有所不同。说您将与 API.
导入版本 1.0
API 时使用的正确版本范围是 "[1,2)"
如果您是消费者或 "[1,1.1)"
如果您是提供者。
消费者是 API 的 "typical users",例如如果我写一个 Servlet 我就是 "consumer" 的 Servlet API。提供者是为 API(例如 TomCat)提供支持实现的人。请注意,这与说实现接口使您成为提供者不同 - 使用 Servlet API 需要您实现 Servlet 接口。