1

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

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

我需要这个本地 p2 站点与使用 maven3/tycho 的构建系统一起使用,但还没有找到一种“稳定”的方式来做到这一点。我尝试了以下方法:

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

问题:不创建 p2 站点,只创建一个包含功能/插件的文件夹。

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

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

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

p2.site 使用 buckmeister

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

4) 复制以下内容:

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

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

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

4

2 回答 2

2

您可以直接从命令行运行它,而不是使用 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 项目更新站点

于 2015-05-01T12:56:09.630 回答
2

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

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

  <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>
于 2011-03-04T21:47:13.517 回答