代码之家  ›  专栏  ›  技术社区  ›  Oroboros102

添加捆绑包以展示由tycho构建的第一个eclipse RCP插件

  •  -1
  • Oroboros102  · 技术社区  · 11 年前

    我有一个巨大的eclipse-rcp项目“a”,其中包含许多rcp插件。所有这些都是由泰乔首先建造的。在一个单独的项目“B”中,我有一些OSGi捆绑包。

    我需要添加来自B的捆绑包作为A中某些插件的依赖项。当我在A-plugin的MANIFEST.MF中添加B捆绑包时(“需要捆绑包:B.bundle1”),tycho找不到B.bundle1.(“无法满足从A.plugin 1.0.0到捆绑包B.bundle10.0.0的依赖项”)。

    我知道,我可以将tycho配置为使用pom依赖项(考虑并添加B.bundle1作为maven依赖项)。第谷现在可以构建项目A,但它忽略了A插件中的所有清单,并生成了新的清单。看起来项目A现在被认为是pom第一。

    如何将OSGi捆绑包添加到我的插件中,首先保留插件的构建清单?

    2 回复  |  直到 11 年前
        1
  •  1
  •   oberlies Jochen Ehret    11 年前

    第谷从来都不是POM第一,也就是说,它从来没有生成Bundle清单。但是,它确实在生成期间读取和写入Manifest源文件(以便替换 .qualifier 文字),因此构建结果中的清单的格式可能与原始清单不同。然而,它相当于来源。

    请注意,根据清单文件格式的定义 如果清单的最后一行未以换行符结束,则忽略该行 。所以,如果你的消息来源是这样的话,看起来第谷从清单中删除了一个标题。这是正确的,但这只是因为头是无效的,无论如何都会被OSGi运行时忽略。

    AFAIK,如果源清单的最后一行没有正确终止,最新的第谷版本会打印警告。

        2
  •  0
  •   Cristiano    11 年前

    第谷可以在两个地方找到捆绑包:P2或Maven存储库。

    如果你的B捆绑包在maven存储库中,即使你在清单中添加了一个Require Bundle,你也需要在a的pom中添加一个依赖项。这意味着它首先并没有完全显现出来。

    但事实确实如此,只有当您的依赖项(项目B)位于某个P2存储库中时。那么您只需要设置清单(Import Package比Require Bundle更好)。

    因此,一种选择是在CI中创建一个作业,从项目B构建捆绑包并将其安装到maven存储库中(mvn-install)。或者创建一个生成p2存储库的作业,并将其部署到某个HTTP服务器上。

    然后创建一个作业来构建a,您需要正确设置其tycho构建以使用生成的maven存储库。。。( http://wiki.eclipse.org/Tycho/Target_Platform#.22POM_dependencies_consider.22 ) 或者p2。。。