我的主机插件声明了对另一个插件的可选依赖项。在为我的主机插件构建片段时,Tycho无法找到可选的插件。这意味着我得到编译错误,因为无法解析可选依赖项中的类。
如果我删除主机插件中的可选标志,Tycho构建工作正常。我正在使用Maven 3.0.4和Tycho 0.15.0。
答案 0 :(得分:5)
如果这确实是第谷的一个错误,或者更确切地说是设计错误,我还未决定。
这是可观察行为的背景:Tycho旨在以与安装捆绑时p2相同的方式执行其依赖项解析。当您向bundle声明可选依赖项时,p2将不会安装该bundle(除非某些其他bundle或feature对该bundle具有非可选依赖项)。因此,遵循此规则,Tycho也不会在依赖项解析和类路径计算期间考虑此可选依赖项。
但是,有一个偏离默认p2行为的开关(在target-platform-configuration
配置选项dependency-resolution/optionalDependencies
中):
require
,在编译时将当前包的所有可选依赖项视为必需。由于这是您通常想要的,这是默认。ignore
,在编译时忽略当前包的所有可选依赖项。请注意,此特殊处理仅适用于当前捆绑包的可选依赖项,而不适用于依赖关系链中的其他捆绑包。主机包当前被视为任何其他依赖项,我们可能会考虑在构建片段时特别对它们进行处理。
对于解决方法,您有以下选项:
答案 1 :(得分:-1)
我找到了解决方法。我删除了主机插件中的可选插件,并通过Manifest-Editor将其添加到片段中。之后,我将其读入主机插件并再次声明为可选。 (如果插件已在主机插件中声明,则无法通过Manifest-Editor的add-Button在片段中看到它) 但我认为这是tycho中的一个错误。片段中也可以使用可选的依赖项,就像在eclipse中一样。