当前位置: 首页 > 知识库问答 >
问题:

您能引用由Tycho通过groupId、artifactId和Version解析的OSGi依赖项吗?

梁修贤
2023-03-14

在Tycho构建中,OSGi依赖关系通常在各个模块(例如,Eclipse插件)的manifest.mf中指定。据我所知,Tycho会在构建时识别这些依赖项,解析它们并将它们添加到maven构建模型中(抱歉,出现了wayback machine链接;Tycho站点目前似乎正在经历一些更改)。

是否可以在其他maven插件中引用这样的派生依赖项?例如,如果我想用maven-dependency-plugin复制特定的依赖项,我如何知道我必须提供哪个groupId、artifactId和version?

共有1个答案

索寒
2023-03-14

Tycho有自己的依赖解析机制,这与Maven的不同。Tycho从p2存储库加载清单中定义的依赖项,而不是从Maven存储库加载(至少通常是*)。Maven工件和p2 bundle具有不同的元数据结构,因此您不能总是将它们映射到彼此之间。例如,Bundle没有组/工件ID的概念。

常规Maven插件只能处理常规Maven依赖项。p2工件对他们来说是不可见的。

根据您试图实现的目标,您可以先尝试将p2包转换为Maven依赖项,然后使用Maven插件处理它们。对于您的特定示例,如果您不介意将构建分成多个步骤,这可能会有所帮助:在常规Maven构建中使用EclipseP2存储库中的依赖项?

*您可以使用pomdependencies=confinance配置Tycho,以包含Maven工件。这些对于普通的Maven插件是可见的,但我不建议这样做,它会使构建/部署变得越复杂越困难

 类似资料:
  • 我正在创建一个新的Karaf特性,它将包含几个包(jclouds)。我还有一个maven“superproject”(jclouds-all),它包含我需要的所有模块/包。 在定义特性时,是否可以只指定一个SuperProject的bundle,并自动解析所有具体的bundle,或者我需要在特性中列出所有的bundle?

  • 值得说的是,当我在Eclipse内部运行单元测试时(而不是在Maven中),它是有效的。 这是我测试片段中的第谷配置: 正如这里所建议的,我将这个特性作为一个依赖项添加,因为我的测试片段除了它的主机之外还需要一些其他的包,所以我希望这能起作用。

  • 我们用Maven和Tycho构建了一个Eclipse插件。然而,目前我们仍然通过一堆手动添加的JAR文件而不是Maven来提供所有的项目依赖。这是由于以下原因:(1)依赖项不能通过标准的Eclipse更新站点获得(至少不能在当前版本中获得),(2)依赖项不能作为捆绑包获得。 这些依赖项中最大的部分是Selenium库(API,远程,特定于浏览器的库及其传递依赖项,例如Guava等)。 我浪费了几个

  • 我正在尝试检索Google Reporting API的库: 但是我收到了一个未解决的依赖项错误,我不知道该怎么办: 我检查了.grails\ivy-cache\文件夹,有一个公共编解码器文件夹,里面有共享资源编解码器1.5的罐子,几个xml文件常春藤-1.5.xml和常春藤-1.6.xml和常春藤数据-1.5.属性和常春藤数据-1.6.属性。我也试图删除整个常春藤缓存文件夹,但结果是一样的。

  • 我创建了一个依赖于SLF4J的捆绑包,因此使用Logback来实现OSGI。这一切都捆绑起来并安装正常,但是当我开始捆绑时,我得到以下异常: org.osgi.framework.BundleException: 無法解析 com.felix.test [20](R 20.0): missing requirements [com.felix.test [20](R 20.0)] osgi.wir

  • 我当前设置中最麻烦的部分是由于Tycho显然无法处理只使用Maven(即非OSGi)的工件。我当前的设置如下所示: > 在每个Eclipse插件的中,我在阶段向发出目标。这将把我指定的工件解压缩到单独的目录中。 目录作为输出目录添加到中,以便Tycho在编译时将其添加到类路径中: 这些设置允许Maven指令编译插件。从VCS导入项目,并手动指定目录作为Eclipse中的类文件夹,这样IDE也可以编