什么是MANIFEST.MF?
MANIFEST.MF 文件存储的实际上是 Bundle 的元数据,可以定义 Bundle 的各种特征,同时能更好的对 Bundle 进行标识同时帮助用户对Bundle进行理解。
MANIFEST.MF文件格式:
1、属性声明一般为:name:value
2、换行缩进一个空格
3、每个子句(clause)进一步分解为一个目标(target)和一组由分号分隔的name-value对参数(parameter)
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: basalt core Bundle-SymbolicName: com.xxx.xxx.core;singleton:=true Bundle-Version: 1.2.0.qualifier Bundle-Activator: com.xxx.xxx.core.Activator Bundle-Vendor: Ruijie Require-Bundle: org.eclipse.core.runtime, org.eclipse.osgi.services;bundle-version="3.6.0", org.apache.commons.lang;bundle-version="2.6.0", org.h2;bundle-version="1.4.185", com.google.guava;bundle-version="21.0.0", org.eclipse.e4.core.contexts;bundle-version="1.6.0", org.eclipse.e4.core.di;bundle-version="1.6.100", org.slf4j.api;bundle-version="1.7.2", io.jfxcef;bundle-version="76.0.0" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Automatic-Module-Name: com.xxx.xxx.web Bundle-ActivationPolicy: lazy Export-Package: com.xxx.xxx.core, com.xxx.xxx.core.base.dao
元素解释:
元素 | 说明 | 备注 |
Manifest-Version | 主要的版本号 | |
Bundle-ManifestVersion | bundle遵循规范的规则 | 1:OSGI的R3规范 2:OSGI的R4/R5规范 |
Bundle-Name | bundle名称 | |
Bundle-SymbolicName | 唯一的bundle名称 | 相当于系统id。singleton表示是否使用单启动方式 |
Bundle-Version | bundle版本号 | |
Bundle-Activator | Activator类路径 | bundle启动和停止时,分别会加载该类的start()和stop() |
Bundle-Vendor | 发布商 | |
Require-Bundle | 依赖的其他bundle | 一旦声明依赖某个bundle,意味着可以直接使用所有从这个bundle中导出的所有package |
Bundle-RequiredExecutionEnvironment | 需要的执行环境 | |
Automatic-Module-Name | ||
Bundle-ActivationPolicy | 设置加载策略 | 该参数目前只有一个:lazy。 设置lazy标识延迟加载该bundle |
Export-Package | 对外暴露的Package | |
Import-Package | 引用包的信息 | 只有引用了这些包,才能让classloader装载 |
Fragment-host | 标记宿主bundle | 当该bundle是一个Fragment Bundle时候,标记Fragment-host为它的宿主bundle |