OSGI MANIFEST.MF详解

2024-01-25 11:21:50 浏览数 (3)

什么是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

0 人点赞