问题描述
在Tycho构建中,通常在相应模块的MANIFEST.MF中指定Osgi依赖项(例如Eclipse插件)。据我了解,Tycho会识别这些依赖关系,并在构建时解析它们,并adds them to the maven build model(对后退机器链接很抱歉; Tycho站点目前似乎在进行一些更改)。
是否可以在其他Maven插件中引用这种派生的依赖关系?例如,如果我想用maven-dependency-plugin复制特定的依赖项,我将如何知道我必须提供哪个groupId,artifactId和版本?
解决方法
Tycho有自己的依赖关系解析机制,与Maven的依赖解析机制不同。 Tycho从p2存储库而不是从Maven存储库(至少通常是*)加载清单中定义的依赖项。 Maven工件和p2捆绑包具有不同的元数据结构,因此您无法始终将它们相互映射。例如,捆绑商品没有组/工件ID的概念。
常规Maven插件只能处理常规Maven依赖项。 p2工件对他们不可见。
根据要实现的目标,您可以尝试先将p2捆绑包转换为Maven依赖项,然后再使用Maven插件对其进行处理。对于您的特定示例,如果您不介意将构建分为多个步骤,这可能会有所帮助:Use dependencies from Eclipse p2 repository in a regular Maven build?
*您可以使用pomDependencies=consider
配置Tycho,以包括Maven工件。这些对于常规的Maven插件是可见的,但是我不建议您这样做,因为它会使构建越复杂,构建/部署就越困难