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 的位置 不是 捆绑包的格式化)。可选 的说明URL 引用一个第二属性文件,该文件指定如何执行捆绑包转换。可选 的说明 是一个 符号,以及 分隔的 Bnd 属性列表,用于指定如何执行捆绑包转换。
15.4.3. 默认说明
在大多数情况下,默认的 Bnd 指令适合嵌套 API JAR 文件。默认情况下,Wrap 将清单标头添加到 JAR 的 META-INF/Manifest.mf
文件中,如 表 15.1 “用于编写 JAR 的默认指令” 所示。
清单标头 | 默认值 |
---|---|
|
|
| 来自嵌套 JAR 的所有软件包。 |
|
JAR 文件的名称,其中不属于 set |
15.4.4. 例子
以下 Wrap URL 在 Maven 存储库中找到 commons-logging
JAR 版本 1.1,并使用默认的 Bnd 属性将其转换为 OSGi 捆绑包:
wrap:mvn:commons-logging/commons-logging/1.1
以下 Wrap URL 使用来自文件 E:\Data\Examples\commons-logging-1.1.bnd
的 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 处理程序的详情,请查看以下引用: