2

是否可以在不使用 p2 下载依赖项或发布生成的工件的情况下使用 Tycho?

我已经有一个包含所有依赖项的 Maven 存储库,我不想为了编译这些 osgi 项目而拥有一个带有重复工件的 p2 存储库。我还想在同一个 maven 存储库中发布生成的工件,以便我可以拥有一个真正的集中式存储库,而不是 maven 存储库和 p2 存储库

所以基本上,我想从我的构建中删除对 p2 的需求。

我知道一个选择是使用 POM-first 工具而不是 tycho,但问题是项目已经使用 PDE 开发,所以这似乎不是一个选项

4

2 回答 2

3

Tycho 可以很容易地在 Maven 存储库中使用 OSGi 包:只需在 pom.xml 中通过其 GAV 指定对包的依赖项并设置pomDependencies=consider选项(请参阅此文档)。Tycho 然后将这些工件用于所有构建步骤:依赖解析、编译、RCP 组装等。

棘手的部分pomDependency=consider是传递依赖:对于 Tycho 构建的任何工件,它要求工件的所有传递依赖都可以针对目标平台解决。使用pomDependency=consider,Tycho 将 GAV 工件及其所有可传递的 Maven 依赖项添加到目标平台,但前提是工件是 OSGi 包(因此“考虑”)。如果 Maven 依赖项之一不是 OSGi 包,则该库将不在目标平台中,因此 Tycho 的依赖项解析(在 OSGi 空间中)可能会失败。

您问题的第二部分是关于通过 Maven 存储库分发 Tycho 工件。可以将 Tycho 工件部署到 Maven 存储库,但这些工件在 Maven 世界中并不是特别有用。这是因为 Tycho 的工件通常在其 POM 中没有依赖关系。因此,要使用来自 Maven 构建的 Tycho 工件(或类似地通过pomDependency=consider),您需要在使用项目的 POM 时手动列出 Tycho 工件的所有依赖项。

于 2012-08-14T12:08:35.160 回答
1

可以告诉 Tycho 使用 POM 依赖项。据我所知,唯一的“陷阱”是,如果您希望使用 eclipse-repository 打包类型构建 RCP 应用程序,这些仍然需要位于 p2 存储库中。

于 2012-07-31T10:35:27.497 回答