您可以引用由Tycho通过groupId,artifactId和版本解析的OSGi依赖项吗?

问题描述

在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插件是可见的,但是我不建议您这样做,因为它会使构建越复杂,构建/部署就越困难

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...