在Maven Tycho多模块项目中管理本地依赖项的版本

时间:2015-10-27 22:44:21

标签: maven osgi tycho

我有一个PDE多模块项目。这个项目是用Maven构建的(它使用Tycho)。每个模块依赖项都在OSGI样式的清单中描述,因此模块采用清单优先的方式。

某些模块依赖于其他本地模块,因此我在清单中有以下内容:

Bundle-SymbolicName: com.example.module1;singleton:=true
Bundle-Version: 1.0.0
Require-Bundle: com.example.module2;bundle-version="[1.0.0]",
com.example.module3;bundle-version="[1.0.0]",

捆绑包版本和本地依赖关系的版本是相同的。我无法从清单中删除本地依赖项的版本,我无法从maven生成清单(tycho,它验证清单,在maven生命周期的开始运行)。

为了更新项目版本,我必须使用" tycho-versions" maven插件。它更新了poms中的版本号,eclipse功能和清单。但是不更新本地依赖项的版本(出于显而易见的原因)。我的自定义脚本修复了此问题。

问题:

  • 有没有办法在OSGI清单中管理本地依赖项的版本?
  • 在多模块OSGI(清单优先)项目中是否有管理本地依赖项版本的最佳实践?

1 个答案:

答案 0 :(得分:0)

Eclipse项目传统上适用于此问题的解决方案是拥有一个包含项目插件的功能,并以此方式确保只将同一版本的版本安装在一起。

这显然只有在安装了版本的功能时才有效。功能通常用于Eclipse用户安装的插件功能。如果要构建仅供其他Eclipse插件使用的库,则也可以在没有功能的情况下安装插件。

在后一种情况下,您可能需要扩展Tycho版本插件以自动更新具有严格版本范围依赖性的依赖项,例如bundle-version="[1.0.0]"