【发布时间】:2016-07-20 22:12:08
【问题描述】:
我们正在努力研究如何正确使用功能。
假设我们有插件org.acme.module,它依赖于org.thirdparty.specific 和org.acme.core。
我们有插件org.acme.other,它依赖于org.acme.core。
我们想从这些文件中创建一个应用程序,其中包括一个目标文件和一个产品文件。我们有以下选择:
每个模块一个功能:
-
org.acme.core.featureorg.acme.core
-
org.acme.module.featureorg.acme.module
-
org.acme.other.featureorg.acme.other
-
org.thirdparty.specific.featureorg.thirdparty.specific
这使得目标和产品文件非常庞大,并且依赖项很难手动管理。
每个依赖组一个特性:
-
org.acme.module.featureorg.acme.coreorg.acme.moduleorg.thirdparty.specific
-
org.acme.other.featureorg.acme.coreorg.acme.other
这种方法使依赖关系非常易于管理,并且目标和产品文件易于阅读和维护。但是它根本不起作用。在org.acme.core 发生变化的那一刻,您需要更改所有功能。此外,应用程序对打包什么没有发言权,因此它甚至无法决定更新org.acme.core(由于错误修复或其他原因)。
平台特点:
-
org.acme.platform.featureorg.acme.coreorg.acme.other-
org.thirdparty.specific(但可能是它自己的功能)
-
org.acme.module.featureorg.acme.module
这是用于 Hello World 应用程序和 Eclipse 附加组件的方法 - 它仅适用于这些。由于所有模块的目标平台都指向org.acme.platform.feature,因此每当任何平台插件发生任何变化时,您都必须相应地更新org.acme.platform.feature。
我们实际上只使用了大约 50 个平台插件就尝试了这种方法。让开发人员为每个错误修复更改功能是不可行的。 (虽然 Tycho 支持版本“0.0.0”,但 Eclipse 不支持,所以使用它是另一个问题。此外,我们需要可重复性,所以让 PDE 选择版本是不可能的。)
这一切都归结为“我无法使用 org.acme.platform.feature 并在两周内覆盖 org.acme.core 的版本,直到新功能发布。
整个问题变得更加困难,因为有时可能有不止一种插件配置(比如说针对不同的数据库提供者),然后有高级模块使用其他子模块才能正常工作,这必须以某种方式进行管理。
我们缺少什么吗?其他公司如何处理这些问题?
Eclipse 家伙似乎使用“每个模块一个功能”的方法。毫不奇怪,因为它是唯一有效的。但他们不使用目标平台或产品文件。
【问题讨论】:
-
您基本上已经找到了功能不能作为一个想法发挥作用的原因。
标签: eclipse-plugin osgi