没有p2的第谷

时间:2012-07-30 21:54:35

标签: maven tycho

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

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

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

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

2 个答案:

答案 0 :(得分:3)

Tycho可以非常轻松地在Maven存储库中使用OSGi包:只需在pom.xml中通过其GAV指定对包的依赖关系,并设置pomDependencies=consider选项(请参阅此documentation)。然后,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工件的所有依赖项。

答案 1 :(得分:1)

可以tell Tycho to use POM dependencies。据我所知,唯一的“问题”是,如果您希望使用eclipse-repository打包类型构建RCP应用程序,这些仍然需要位于p2存储库中。