从远程p2站点创建本地p2站点?

时间:2011-03-04 21:11:12

标签: eclipse p2

在eclipse中我创建了一个.target文件,我在其中添加了远程eclipse p2站点的功能。

现在我想创建一个本地p2站点,它是目标定义中定义的聚合功能的副本(最好是适用于所有环境)。

我需要使用maven3 / tycho将此本地p2站点与构建系统一起使用,但尚未找到“稳定”的方法来执行此操作。我尝试过以下方法:

1)将目标文件导出到本地目录。

问题: 不创建p2站点只是具有功能/插件的文件夹。

2)将目标文件导出到本地目录并在目录上运行eclipse FeaturesAndBundlesPublisher应用程序。

问题: 这会创建一个p2站点,但缺少一些原始功能/包。

3)使用buckmeister从.target文件初始化的功能创建p2站点:

p2.site using buckmeister

问题: .target文件内容的原始功能不会保留在生成的p2站点中。特别是如果目标文件包含以下功能,则会出现此问题: org.eclipse.equinox.executable.feature在最终的p2站点中将缺少此功能。

4)复制内容:

workspace.metadata.plugins \ org.eclipse.pde.core.bundle_pool

问题:不是有效的p2网站。

有关如何从远程p2站点创建工作(具有完整功能)本地p2站点的任何建议吗?

2 个答案:

答案 0 :(得分:2)

您想使用p2 mirror命令。为它提供一个远程存储库URL和一个镜像到的本地目录。这是一个Ant宏来执行此操作。请注意它是如何进行两次镜像调用的,因为大多数p2存储库实际上是两个存储库(工件和元数据)。

它需要“bootstrap.platform”属性集,这是Eclipse安装的一个位置,你要使用它的p2。

  <macrodef name="p2.mirror">
    <attribute name="source"/>
    <attribute name="destination"/>
    <sequential>
      <echo message="Mirroring repository @{source} to @{destination}..."/>
      <java classname="org.eclipse.core.launcher.Main" fork="true" failonerror="true">
        <classpath>
          <fileset dir="${bootstrap.platform}/plugins">
            <include name="**/org.eclipse.equinox.launcher_*.jar"/>
          </fileset>
        </classpath>
        <arg line="-application org.eclipse.equinox.p2.artifact.repository.mirrorApplication"/>
        <arg line="-source @{source}"/>
        <arg line="-destination @{destination}"/>
      </java>
      <java classname="org.eclipse.core.launcher.Main" fork="true" failonerror="true">
        <classpath>
          <fileset dir="${bootstrap.platform}/plugins">
            <include name="**/org.eclipse.equinox.launcher_*.jar"/>
          </fileset>
        </classpath>
        <arg line="-application org.eclipse.equinox.p2.metadata.repository.mirrorApplication"/>
        <arg line="-source @{source}"/>
        <arg line="-destination @{destination}"/>
      </java>
    </sequential>
  </macrodef>

答案 1 :(得分:2)

您可以直接从命令行运行Ant,而不是使用Ant:

eclipse -nosplash -verbose
  -application org.eclipse.equinox.p2.artifact.repository.mirrorApplication
  -source http://download.eclipse.org/releases/luna
  -destination file:/temp/lunaclone

eclipse -nosplash -verbose
  -application org.eclipse.equinox.p2.metadata.repository.mirrorApplication
  -source http://download.eclipse.org/releases/luna
  -destination file:/temp/lunaclone

进入时,每个命令当然应该是一行。

如果您使用的是Windows系统,则目标路径就像

  -destination file:C:/temp/lunaclone

如果您需要不同的版本(-source),请查看Eclipse Project Update Sites