合并/聚合Eclipse P2仓库/可扩展的P2仓库。

12

使用maven/tycho构建Nodeclipse Eclipse插件时,每次发布都会有一个新的p2存储库。

发布在Bintray上进行,它不允许更新文件。因此,每个版本都会放在自己的文件夹中。

BaseFolder
BaseFolder/VersionFolder1
BaseFolder/VersionFolder2
BaseFolder/VersionFolder3

是否可能将BaseFolder预先准备为可扩展的p2存储库,然后稍后添加VersionFolderN

这样就只有一个更新的URL,Eclipse平台可以在存储库中发现更新。


发现了http://download.eclipse.org/datatools/updates/的示例,其中列出了Eclipse数据工具平台(DTP)项目http://www.eclipse.org/datatools/的所有版本(请注意,对于用户,提供了URL http://download.eclipse.org/datatools/updates/1.11)。 - Paul Verest
真的没有办法编辑索引文件吗?如果是的话,只有一些相当棘手的解决方案,涉及猜测所有可能的未来发布版本。 - oberlies
1个回答

19

你需要的是一个复合 p2 仓库。您只需在基本文件夹中使用以下两个文件:

  • 具有以下内容的 compositeContent.xml

    <?xml version='1.0' encoding='UTF-8'?>
    <?compositeMetadataRepository version='1.0.0'?>
    <repository name='Project XYZ Releases Repository' type='org.eclipse.equinox.internal.p2.metadata.repository.CompositeMetadataRepository' version='1.0.0'>
        <properties size='1'>
            <property name='p2.atomic.composite.loading' value='true'/>
        </properties>
        <children size='3'>
            <child location='VersionFolder1'/>
            <child location='VersionFolder2'/>
            <child location='VersionFolder3'/>
        </children>
    </repository>
    
  • 包含以下类似内容的compositeArtifacts.xml文件:

  • <?xml version='1.0' encoding='UTF-8'?>
    <?compositeArtifactRepository version='1.0.0'?>
    <repository name='Project XYZ Releases Repository' type='org.eclipse.equinox.internal.p2.artifact.repository.CompositeArtifactRepository' version='1.0.0'>
        <properties size='0'>
        </properties>
        <children size='3'>
            <child location='VersionFolder1'/>
            <child location='VersionFolder2'/>
            <child location='VersionFolder3'/>
        </children>
    </repository>
    
    当发布新版本时,只需将新文件夹作为子文件夹添加到这两个文件中。
    这两个文件也可以压缩成ZIP文件,并命名为compositeContent.jarcompositeArtifacts.jar,以节省网络带宽。但是这样做会使编辑文件变得不太实用。
    Eclipse同时发布仓库也使用这种方法。例如,在撰写本文时,Eclipse Luna repository仅包含原始版本和SR 1(请参见compositeContentcompositeArtifacts)。 稍后将添加SR 2,以便用户无需配置新的存储库URL即可获取更新版本。

这是解决问题的绝佳方案。所有的VersionFolder都应该从一开始就存在吗?compositeContent.jarcompositeArtifacts.jar可以与artifacts.jarcontent.jar放在同一个文件夹中http://dl.bintray.com/nodeclipse/nodeclipse/吗?这是我现在研究的问题。非常感谢。 - Paul Verest
仙境!这个例子已经可以运行了!https://raw.github.com/Enide/eclipse-p2-composite-repository/master/ - Paul Verest
如果您将 compositeContent/Artifacts.jarcontent/artifacts.jar 放置在同一个文件夹中,p2/Tycho 只会考虑其中一个。默认情况下,只有后者会被使用。 - oberlies

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接