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 的默认指令” 所示。

表 15.1. 用于编写 JAR 的默认指令
清单标头默认值

import-Package

*;resolution:=optional

export-Package

来自嵌套 JAR 的所有软件包。

Bundle-SymbolicName

JAR 文件的名称,其中不属于 set [a-zA-Z0-9_-] 的任何字符都被下划线 _ 替换。

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 处理程序的详情,请查看以下引用:

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.