填补 PDE 和第谷之间的空白

Filling the gap between PDE and Tycho

多年来,我一直使用 PDE 打包我的各种 Eclipse RCP 产品。

最近一次尝试升级到 Eclipse Oxygen 时,我遇到了一些我无法解决的新的奇怪分辨率错误,我决定是时候试试 Tycho 了。我遵循了 the excellent article about Tycho by Lars Vogel,经过一些调整后,它运行良好(而且我没有被 PDE 中相同的分辨率错误所困!耶!)。

但这确实是一个简单的测试:我为我的包创建了一个文件夹,为我的功能创建了另一个文件夹,创建了我的 poms,等等。现在我看看我的 PDE 中的自动化程度,发现差距很大。

在 PDE 中,有一个 build.properties,您可以在其中提供您的主特征文件和一个地图文件,并且该过程似乎:

(注意:git 部分需要您提供 egit fetchfactory)

现在在 Tycho 中,我必须创建 poms,但这不是问题所在。我必须创建一些主 poms,对于各个插件 poms,我有 pomless 选项或 pom 生成器。 pom 生成器似乎还具有创建包含所有插件作为模块的父 pom 的优势。到目前为止一切顺利。

但我必须填写功能和插件文件夹,我被困在这里。 我的产品没有 PSF,因为我从来不需要它:在 PDE 中,映射 + 产品定义就可以了。

这是否意味着我必须从现在开始维护 PSF,或者是否还有其他我没有找到的第谷解决方案? (在我看来,Tycho doc 非常稀缺)。维护PSF对我来说似乎是多余的,因为我有产品和地图,也因为我有很多产品,很多插件,其中很多是几个产品共有的。

(事实上,一个基本的解决方案是获取映射文件中提到的 git 存储库,将它们全部转储并启动 tycho。Tycho 将编译所有插件,然后 p2 部分只打包与产品相关的。问题是我有很多不同的产品依赖于很多不同的存储库。即使在给定的 git 存储库中,我也有可能与给定产品相关或不相关的插件.因此,我会在此过程中编译数百个无用的插件。)

我需要在 tycho 文件夹中仅复制在我的产品中引用但尚未在我的目标平台中的插件和功能。从我的产品和我的地图生成 PSF 会转移问题。

的确,我可以编写代码,如果需要的话我会的。 但是鉴于所有这些都已经在 PDE 中实现了自动化,是否至少有一些过程的某些部分可以通过我没有发现的一些第谷插件实现自动化?

经过一段时间的挖掘,这是我最终选择的解决方案。

为了获取相关的功能和插件,我使用了... PDE!我深入研究了 PDE,发现了其过程中的各个步骤。第一个是获取(它是一个名为eclipse.fetch的蚂蚁任务)。我将这部分外部化,我的脚本启动它,然后通过扫描获取的功能名称和 fecthed 插件名称生成主 poms,然后添加其他 tycho 配置,然后启动 tycho。

最后,当然,它不是完整的 tycho 解决方案,它是 PDE + Tycho 的混合体。但它就像一个魅力,build/package 进程是 Tycho,只有初始提取被委托给 PDE。 (无论如何,PDE build/package 过程在我的情况下不起作用,如最初所述)