【发布时间】:2015-12-03 11:09:01
【问题描述】:
最近,我被指派改进 Eclipse 插件所具有的相互依赖关系的结构。我们称它为“核心”,并假设以下清单描述了这个 Eclipse 插件,所有其他插件都指向该插件,以便它们访问服务(RMI、OSGi 服务)。这些服务可以通过使用“rmiservices.jar”(Maven 生成的工件)和另一个名为“org.osgiservice”的 Eclipse 插件来访问。其他捆绑包引用“核心”捆绑包并使用 Export-Package 声明来使用这些服务。
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: core
Bundle-SymbolicName: coreid;singleton:=true
Bundle-Version: 0.0.1
Bundle-Activator: org.sample.Activator
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Bundle-ActivationPolicy: lazy
Export-Package: org.sample.api,
org.rmiservice,
org.osgiservice
Bundle-Localization: plugin
Bundle-ClassPath: lib/rmiservices.jar
Require-Bundle: org.osgiservice;bundle-version="1.0.0";visibility:=reexport
为了改进依赖结构而出现的问题是:
- “核心”插件在其生成的 jar 中包含 rmiservices.jar。将 rmiservices.jar 作为单独的捆绑包会更好吗?
- rmiservices.jar 是 maven 生成的工件。将其移至 P2 存储库并在目标定义中公开是否有好处?
【问题讨论】:
-
通过将 rmiservices.jar 移动到 P2 存储库,有一个缺点是增加了一个步骤并增加了开发-构建-部署之间的往返。
标签: eclipse-plugin osgi-bundle tycho p2 manifest.mf