p2存储库仅包含功能内容且没有依赖项

时间:2013-04-26 13:38:14

标签: eclipse build p2

我需要创建p2存储库以在我的应用程序中添加额外的软件。 例如,我想要外化所有i18n包,所以我有一组只有i18n片段的功能。

我这样做的方式是从pde构建的完整p2存储库,包含产品和i18n插件及功能。

我尝试使用p2.mirror ant任务创建一个只包含i18n片段的p2存储库,但问题是它总是嵌入那些i18n bundle依赖的主机包。这使得我的p2 repo非常庞大,因为它的大部分应用程序都与i18n一起使用。

<p2.mirror source="file://${build.repo.path}" destination="file://${i18n.repo.path}">
    <iu id="org.talend.i18n.all-feature.feature.group" version="" />
</p2.mirror>

有没有办法创建一个p2存储库,只包含给定功能中引用的包而不包含托管它们的包?

1 个答案:

答案 0 :(得分:1)

您需要添加所谓的“切片选项”并指定您只需要严格的版本范围依赖项:

<p2.mirror ...>
    <slicingoptions followStrict="true" />
</p2.mirror>

功能和插件之间的包含关系在p2中编码为严格的版本范围依赖关系,因此使用此选项时,您应该只获取该功能及其包含的插件。

请注意,p2依赖发布商正确翻译feature.xml中的信息。如果您使用非标准发布者或通过p2.inf影响发布,则严格版本范围依赖关系可能不会与包含内容1:1相关。在这种情况下,无法实现您想要的效果。 p2镜像仅对p2元数据进行操作 - 没有选项可以让它再次查看feature.xml