OSGi MANIFEST.MF 文件详解

原文地址:OSGi  MANIFEST.MF 文件详解 作者:黑夜
MANIFEST.MF文件选项 Bundle-Activator
该类用于启动和停止绑定包。在上面的示例插件中,指定了 org.eclipse.pde.internal.ui.PDEPlugin类。该类扩展 org.eclipse.core.runtime.Plugin,实现了 BundleActivator 接口。
Bundle-ClassPath
该属性指定要用于绑定包的 CLASSPATH。该属性可以包含对绑定包 jar 文件中目录或 jar文件的引用。可以使用句点指明绑定包的根。在示例 Eclipse PDE 绑定包中,指定了绑定包 jar 文件中的org.eclipse.pde.ui_3.1.0.jar。如果将插件的源版本导入工作区中,导入过程将更改绑定包 CLASSPATH以显示为 Bundle-ClassPath:,这允许插件的开发版本挑选已编译的绑定包类。
Bundle-Version
该属性指定绑定包的版本号。包导入和必需的绑定包规范可以包括绑定包版本号。
Export-Package
该属性指定要公共暴露给其他插件的所有包。
Import-Package
该属性指定要从必需插件中显式导入的所有包。默认情况下,必须为要启动的绑定包解析所有包。还可以将包导入指定为可选项,以支持包不存在的情况。显式导入的类在Require-Bundle 插件中的包之前解析。
Require-Bundle
该属性指定要在给定绑定包中导入使用的绑定包及其已导出的包。指定的绑定包在显式包导入之后解析。

Eclipse提供的其他清单选项

 

[转载]OSGi <wbr> <wbr>MANIFEST.MF <wbr>文件详解
伙伴类加载器选项

首先为 Hibernate 创建插件。然后创建一个插件,其中包含与 Hibernate 有依赖关系的特定于域的类。将下列行添加到Hibernate 插件清单中:Eclipse-BuddyPolicy:registered

将下列清单属性添加到包含特定于域的类或资源的插件清单中: Eclipse-RegisterBuddy: hibernate

该行允许插件通过声明将自己暴露给 Hibernate 插件,而它预先并不知道这些插件。现在,Hibernate插件可以看到需要的类,虽然它并没有专门导入它们。

 

OSGi 规范包括的 manifest.mf 配置选项不提供 Eclipse 平台需要的所有功能。因此,Eclipse创建者添加了多个扩展(还建议将它们包括在未来版本的 OSGi 规范中):

Export-Package 头扩展
Eclipse 具有两个 OSGi 解析器方法 —— defaultstrict,可以使用 osgi.resolver 属性指定它们。Eclipse 还包括对 Export-Package 属性的两个扩展 —— x-internalx-friends,启用 Strict模式时,会强制执行这两个扩展。
x-internal
该属性的默认值是 false。当使用该选项将内部包指定为 true 时,Eclipse PDE 禁止其使用。
x-friends
该选项类似于 x-internal,但允许特定绑定包使用具有该选项的已导出包。其他绑定包被禁止。 x-internal选项优先于 x-friends
Eclipse-AutoStart
默认情况下,Eclipse根据需要加载绑定包。因此,当导入绑定包包含的第一个类的绑定包需要这个类时,就会加载这些绑定包。将该值指定为 ?? 会导致 Eclipse在启动时加载绑定包。还可以指定例外情况列表,它们是无需启动包含它们的绑定包就可以加载的类和资源。
Eclipse-PlatformFilter
该属性允许为要启动的绑定包指定必须等于 true的条件。可以将下列信息包括在指定的表达式中:
  • osgi.nl,表示语言
  • osgi.os,表示操作系统
  • osgi.arch,表示架构
  • osgi.ws,表示窗口系统
展示如何使用该属性的一个示例是,在启动使用 SWT_AWT 桥的插件之前验证操作系统是否是 Mac OS X。(StandardWidget Toolkit(SWT)的 Mac OS X 实现当前不支持该功能。)
Eclipse-BuddyPolicy
该选项指定加载绑定包策略的类。通常,绑定包只在其内部类和从依赖绑定包中导入的内部类中具有可见性。在 Eclipse新闻组中用来解释伙伴类加载的流行示例是 Hibernate。Hibernate 框架必须查看用户创建的而非 Hibernate本身一部分的类和资源。这样的一种情况是当使用项目动态填充来自 Hibernate QueryLanguage(HQL)查询的类时。默认情况下,Hibernate 将无法查看位于包含 Hibernate jar文件的插件外部的类,而需要修改 Hibernate 插件以创建包含 Hibernate地图不可接受的类的每个插件。幸运的是, 伙伴类加载器选项一节中介绍的伙伴类加载器选项解决了这个问题。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值