我有一个使用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.jar
,download.eclipse.org
等),这非常慢。
一旦Tycho开始下载捆绑包,它就会使用镜像。
我还想使用Eclipse存储库的镜像来下载元数据。是否有我可以使用的替代URL,或者我可以设置的属性,以使Tycho使用最近的镜像?
我知道我可以替换:
http://download.eclipse.org/releases/luna
用,说:
http://ftp.acc.umu.se/mirror/eclipse.org/releases/luna/
但我想知道是否有办法让Tycho自动使用地理位置最接近的镜像,而不需要对其进行硬编码。
答案 0 :(得分:0)
默认情况下,从eclipse.org下载的p2将使用自动镜像选择(基于我假设的位置)。这适用于除了在eclipse.org集中保存的索引文件(content.jar,artifacts.jar)之外的所有文件。
Tycho有一个booelan开关tycho.disableP2Mirrors(默认为false)确保它为假(使用maven调试模式-X)
答案 1 :(得分:0)
p2内置镜像选择机制仅适用于工件,但不适用于索引文件content.jar
和artifacts.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
。