什么是MANIFEST.MF?
MANIFEST.MF 文件存储的实际上是 Bundle 的元数据,可以定义 Bundle 的各种特征,同时能更好的对 Bundle 进行标识同时帮助用户对Bundle进行理解。
MANIFEST.MF文件格式:
1、属性声明一般为:name:value
2、换行缩进一个空格
3、每个子句(clause)进一步分解为一个目标(target)和一组由分号分隔的name-value对参数(parameter)
代码语言:javascript复制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 |