15.4. 嵌套 URL 处理程序
15.4.1. 概述 复制链接链接已复制到粘贴板!
如果您需要引用未打包为捆绑包的 JAR 文件,您可以使用 Wrap URL 处理程序进行动态转换。Wrap URL 处理程序的实施基于 Peter Krien 的开源 Bnd 工具。
15.4.2. 语法 复制链接链接已复制到粘贴板!
Wrap URL 具有以下语法:
wrap:locationURL[,instructionsURL][$instructions]
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: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: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
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
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 文档。