2015-10-27 163 views
2

我有一个PDE多模块项目。这个项目是用Maven构建的(它使用Tycho)。每个模块依赖关系都在OSGI风格的清单中进行了描述,因此这些模块处于清单优先风格。在Maven Tycho多模块项目中管理本地依赖项的版本

一些模块依赖于其他局部模块,所以在体现我有以下几点:

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(manifest-first)项目中的本地依赖项版本?
+0

这是不是100%准确清楚要归档的内容。你是否想要强制你的module1只与module2一起运行,版本完全相同?这不是你现在指定的:'bundle-version =“1.0.0”'表示“版本1.0.0或更高版本”。 – oberlies

+0

@oberlies,谢谢你的评论。我已经解决了我的问题。 –

回答

0

Eclipse项目传统上应用于此问题的解决方案是具有包含项目插件的功能,并且确保只有来自同一个构建的版本才能安装在一起。

这显然只适用于同时安装连接版本的功能。功能通常用于由Eclipse用户安装的插件功能。如果您正在构建仅由其他Eclipse插件使用的库,那么您的插件也可能不具备某项功能。

在后一种情况下,你可能需要延长第谷版本的插件也自动更新与严格的版本范围的依赖关系的依赖,就像bundle-version="[1.0.0]"

相关问题