如何配置Tycho也使用附近的p2镜像content.jar和artifacts.jar?

时间:2015-03-04 10:03:20

标签: tycho p2

我有一个使用Maven和Tycho构建的Eclipse产品。顶级POM指定了一些Eclipse p2站点:

<repository>
    <id>eclipse</id>
    <url>http://download.eclipse.org/releases/luna</url>
    <layout>p2</layout>
</repository>
<repository>
    <id>eclipse-updates</id>
    <url>http://download.eclipse.org/eclipse/updates/4.4</url>
    <layout>p2</layout>
</repository>

似乎Tycho总是直接从content.jar下载p2存储库元数据(artifacts.jardownload.eclipse.org等),这非常慢。

一旦Tycho开始下载捆绑包,它就会使用镜像。

我还想使用Eclipse存储库的镜像来下载元数据。是否有我可以使用的替代URL,或者我可以设置的属性,以使Tycho使用最近的镜像?

我知道我可以替换:

http://download.eclipse.org/releases/luna

用,说:

http://ftp.acc.umu.se/mirror/eclipse.org/releases/luna/

但我想知道是否有办法让Tycho自动使用地理位置最接近的镜像,而不需要对其进行硬编码。

2 个答案:

答案 0 :(得分:0)

默认情况下,从eclipse.org下载的p2将使用自动镜像选择(基于我假设的位置)。这适用于除了在eclipse.org集中保存的索引文件(content.jar,artifacts.jar)之外的所有文件。

Tycho有一个booelan开关tycho.disableP2Mirrors(默认为false)确保它为假(使用maven调试模式-X)

答案 1 :(得分:0)

p2内置镜像选择机制仅适用于工件,但不适用于索引文件content.jarartifacts.jar。据我所知,这个选项至少在开发此功能的某个时候被考虑过,但随后决定采取相应措施。原因是陈旧的镜像会导致不稳定的行为,而没有镜像索引文件,p2对陈旧或损坏的镜像相当健壮:当从一个镜像下载工件失败时,p2将尝试另一个镜像(与Eclipse不同,你实际上可以在Tycho的日志输出中看到这种情况。

因此,如果您还想从镜像中获取元数据,唯一不错的选择是configure mirrors in your settings.xml。通过这种方式,您无法自动选择最近的镜像,但您至少不必更改pom.xml。

因此,在您的示例中,您需要添加以下settings.xml配置:

<mirrors>
   <mirror>
      <id>eclipse-luna-umu.se</id>
      <mirrorOf>eclipse</mirrorOf>
      <url>http://ftp.acc.umu.se/mirror/eclipse.org/releases/luna</url>
      <layout>p2</layout>
      <mirrorOfLayouts>p2</mirrorOfLayouts>
   </mirror>
</mirrors>

我建议您使用比eclipse更具体的存储库ID,例如eclipse-luna