【问题标题】:Bundle Manifest dependencies捆绑清单依赖项
【发布时间】: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

为了改进依赖结构而出现的问题是:

  1. “核心”插件在其生成的 jar 中包含 rmiservices.jar。将 rmiservices.jar 作为单独的捆绑包会更好吗?
  2. rmiservices.jar 是 maven 生成的工件。将其移至 P2 存储库并在目标定义中公开是否有好处?

【问题讨论】:

  • 通过将 rmiservices.jar 移动到 P2 存储库,有一个缺点是增加了一个步骤并增加了开发-构建-部署之间的往返。

标签: eclipse-plugin osgi-bundle tycho p2 manifest.mf


【解决方案1】:

您应该将 jar 放入它自己的包中。如果您的应用程序增长,您可能需要从不同的包访问该库。使用本地 jar,您可能会冒着被不同包加载不同版本的风险(由于那些本地 jar 副本),从而导致运行时出现非常奇怪的错误。

如果 jar 在 P2 中可用,那么您可以使用 Tycho 轻松构建完整的应用程序。构建过程的自动化和可重复性非常值得短期较长的构建时间。

【讨论】:

  • 出于您提到的原因,我相信您对将 jar 移入其自己的捆绑包的第一点是正确的。关于使用 P2 repo 的第二个主题:既然 jar 是 maven 工件,那么将它带到 Tycho/P2“世界”的简单方法是什么?我的意思是核心插件是一个 Eclipse 插件,工具(eclipse IDE,tycho)仅支持通过目标平台和/或 P2 存储库提供的捆绑包(此外,tycho 仅支持在线 P2 存储库,因此可以进行本地构建和本地部署rmiservices.jar 对测试完全没用)。
  • Tycho 最终会提供一种获取或指向本地 Maven 仓库工件的方法吗?
猜你喜欢
  • 2015-10-04
  • 2015-02-14
  • 1970-01-01
  • 1970-01-01
  • 2015-03-12
  • 1970-01-01
  • 2012-11-01
  • 2013-11-02
  • 2018-04-18
相关资源
最近更新 更多