15.4. 嵌套 URL 处理程序
15.4.1. 概述
如果您需要引用未打包为捆绑包的 JAR 文件,您可以使用 Wrap URL 处理程序进行动态转换。Wrap URL 处理程序的实施基于 Peter Krien 的开源 Bnd 工具。
15.4.2. 语法
Wrap URL 具有以下语法:
wrap:locationURL[,instructionsURL][$instructions]
locationURL 可以是找到 JAR 的任何 URL(引用的 JAR 不会 作为捆绑包的格式)。可选的 instructionsURL 引用了一个 Bnd 属性文件,用于指定如何执行捆绑包转换。可选的 指令是 符号、和,由 Bnd 属性列表指定如何执行捆绑包转换。
15.4.3. 默认说明
在大多数情况下,默认的 Bnd 指令可用于嵌套 API JAR 文件。默认情况下,Wrap 将清单标头添加到 JAR 的 META-INF/Manifest.mf
文件中,如 表 15.1 “Wrapping a JAR 的默认说明” 所示。
manifest Header | 默认值 |
---|---|
|
|
| 来自已封装 JAR 的所有软件包。 |
|
JAR 文件的名称,其中任何不在集合 |
15.4.4. 例子
以下 Wrap URL 找到 Maven 存储库中的 commons-logging
JAR 版本 1.1,并使用默认的 Bnd 属性将其转换为 OSGi 捆绑包:
wrap:mvn:commons-logging/commons-logging/1.1
以下 Wrap URL 使用来自文件的 Bnd 属性,E:\Data\Examples\commons-logging-1.1.bnd
:
wrap:mvn:commons-logging/commons-logging/1.1,file:E:/Data/Examples/commons-logging-1.1.bnd
以下 Wrap URL 指定 Bundle-SymbolicName
属性和 Bundle-Version
属性:
wrap:mvn:commons-logging/commons-logging/1.1$Bundle-SymbolicName=apache-comm-log&Bundle-Version=1.1
如果前面的 URL 用作命令行参数,可能需要转义美元符号 \$
以防止命令行处理它,如下所示:
wrap:mvn:commons-logging/commons-logging/1.1\$Bundle-SymbolicName=apache-comm-log&Bundle-Version=1.1
15.4.5. 参考
有关嵌套 URL 处理程序
的详情,请查看以下引用:
- 有关 Bnd 属性和 Bnd 指令文件的详情,请参阅 Bnd 工具文档。
- 原始 Pax URL Wrap Protocol 文档。