Tycho 主机的可选依赖项在片段中不可用

Tycho 主机的可选依赖项在片段中不可用,tycho,Tycho,我的主机插件声明了对另一个插件的可选依赖关系。在构建我的主机插件的片段时,Tycho找不到可选的必需插件。这意味着,由于无法解析可选依赖项中的类,因此会出现编译错误 如果我删除主机插件中的可选标志,Tycho构建就可以正常工作。我正在使用Maven 3.0.4和Tycho 0.15.0。我找到了一个解决方法。我删除了主机插件中的可选插件,并通过清单编辑器将其添加到片段中。之后,我把它读给主机插件,并再次声明它是可选的。 (如果插件已经在主机插件中声明,那么通过清单编辑器的add按钮在片段中看不到

我的主机插件声明了对另一个插件的可选依赖关系。在构建我的主机插件的片段时,Tycho找不到可选的必需插件。这意味着,由于无法解析可选依赖项中的类,因此会出现编译错误


如果我删除主机插件中的可选标志,Tycho构建就可以正常工作。我正在使用Maven 3.0.4和Tycho 0.15.0。

我找到了一个解决方法。我删除了主机插件中的可选插件,并通过清单编辑器将其添加到片段中。之后,我把它读给主机插件,并再次声明它是可选的。 (如果插件已经在主机插件中声明,那么通过清单编辑器的add按钮在片段中看不到它)
但我认为这是第谷的一个错误。与eclipse中一样,片段中也必须有可选的依赖项

我找到了一个解决办法。我删除了主机插件中的可选插件,并通过清单编辑器将其添加到片段中。之后,我把它读给主机插件,并再次声明它是可选的。 (如果插件已经在主机插件中声明,那么通过清单编辑器的add按钮在片段中看不到它)
但我认为这是第谷的一个错误。与eclipse中一样,片段中也必须有可选的依赖项

我还不确定这是否真的是第谷的一个bug,或者更确切地说是出于设计

这是可观察行为的背景:Tycho的目标是以与p2在安装捆绑包时相同的方式解决其依赖关系。当您声明捆绑包的可选依赖项时,p2不会安装该捆绑包(除非其他捆绑包或功能对该捆绑包具有非可选依赖项)。因此,遵循这个规则,TyCHO也不会考虑依赖性解析和类路径计算中的这种可选依赖性。 但是,存在一个偏离默认p2行为的开关(在
目标平台配置
配置选项
依赖项解析/可选依赖项
):

  • 使用值
    require
    ,当前捆绑包的所有可选依赖项在编译时都被视为所需。因为这是您通常想要的,这是默认值
  • 使用值
    ignore
    ,在编译时将忽略当前捆绑包的所有可选依赖项
请注意,此特殊处理仅适用于当前捆绑包的可选依赖项,而不适用于依赖项链中的其他捆绑包。宿主束目前被视为任何其他依赖项,我们可以考虑在构建片段时特别对待它们。 您有以下解决方案选项:

  • 还要在片段的清单中添加可选依赖项。最简单的方法是使用文本编辑器。严格地说,这是正确的做法:片段确实应该声明自己的依赖项,而不是依赖于其他地方的声明。但由于PDE不要求您这样做,所以第谷是否应该这样做是值得怀疑的
  • 通过在片段中添加显式的仅编译时依赖项

我还不确定这是否真的是第谷的一个bug,或者更确切地说是出于设计

这是可观察行为的背景:Tycho的目标是以与p2在安装捆绑包时相同的方式解决其依赖关系。当您声明捆绑包的可选依赖项时,p2不会安装该捆绑包(除非其他捆绑包或功能对该捆绑包具有非可选依赖项)。因此,遵循这个规则,TyCHO也不会考虑依赖性解析和类路径计算中的这种可选依赖性。 但是,存在一个偏离默认p2行为的开关(在
目标平台配置
配置选项
依赖项解析/可选依赖项
):

  • 使用值
    require
    ,当前捆绑包的所有可选依赖项在编译时都被视为所需。因为这是您通常想要的,这是默认值
  • 使用值
    ignore
    ,在编译时将忽略当前捆绑包的所有可选依赖项
请注意,此特殊处理仅适用于当前捆绑包的可选依赖项,而不适用于依赖项链中的其他捆绑包。宿主束目前被视为任何其他依赖项,我们可以考虑在构建片段时特别对待它们。 您有以下解决方案选项:

  • 还要在片段的清单中添加可选依赖项。最简单的方法是使用文本编辑器。严格地说,这是正确的做法:片段确实应该声明自己的依赖项,而不是依赖于其他地方的声明。但由于PDE不要求您这样做,所以第谷是否应该这样做是值得怀疑的
  • 通过在片段中添加显式的仅编译时依赖项

如果您希望更改Tycho行为,您需要在中提出这一点。这是一个很好的解释,但在我看来,如果Tycho行为与eclipse行为不同,则这是一个糟糕的可用性和冗余配置。因此,我创建了一个bug:如果您喜欢改变Tycho行为,您需要在中提出。这是一个很好的解释,但在我看来,如果Tycho行为与eclipse行为不同,那么这是一个糟糕的可用性和冗余配置。因此,我创建了一个bug: