【问题标题】:Combine/aggregate eclipse p2 repositories / extendable p2 repository合并/聚合 eclipse p2 存储库/可扩展 p2 存储库
【发布时间】:2014-01-18 01:25:05
【问题描述】:

使用 maven/tycho 构建 Nodeclipse Eclipse 插件,每个版本都有新的 p2 存储库。

在不允许更新文件的Bintray 上完成发布。所以每个版本都在它的文件夹中。

BaseFolder
BaseFolder/VersionFolder1
BaseFolder/VersionFolder2
BaseFolder/VersionFolder3

是否可以将 BaseFolder 准备一次作为可扩展的 p2 存储库,然后稍后添加 VersionFolderN

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

【问题讨论】:

标签: eclipse repository aggregation tycho p2


【解决方案1】:

您正在寻找的是一个复合 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 dl.bintray.com/nodeclipse/nodeclipse 吗?这是我现在研究的问题。非常感谢。
  • 仙境!这个例子已经有效! https://raw.github.com/Enide/eclipse-p2-composite-repository/master/
  • 如果您将compositeContent/Artifacts.jarcontent/artifacts.jar 放在同一个文件夹中,p2/Tycho 将只考虑其中一个。默认情况下,只会使用后者。
猜你喜欢
  • 1970-01-01
  • 2013-01-26
  • 1970-01-01
  • 2018-12-07
  • 2017-07-15
  • 2017-10-09
  • 2011-02-24
  • 2016-09-29
  • 2012-04-25
相关资源
最近更新 更多