是否有直接链接到eclipse.jdt.core jar?

时间:2012-10-20 15:54:47

标签: maven sbt eclipse-jdt

我注意到很多项目将org.jdt.core jar放在lib folder中,因为它在maven存储库中不可用。 sbt,我正在使用的构建工具,可以直接从URL中提取依赖项。但是,我在eclipse下载页面上找不到任何直接指向jar的链接。我能找到的关闭是指向整个jdt zip的链接,其中包含许多jar文件。我不相信sbt可以从zip依赖中提取jar。 是否有直接链接或其他一些解决方法?

1 个答案:

答案 0 :(得分:15)

取决于您所需的版本是否已存在于存储库中。

对于org.eclipse.jdt.core:

tycho项目似乎将org.eclipse.jdt.core的某些版本部署到了中心。参见:

http://central.maven.org/maven2/org/eclipse/tycho/org.eclipse.jdt.core/

我发现使用search.maven.org。其中一个可能足以满足您的需求。但他们似乎没有“官方”二进制文件,只是重建它们。

(请注意,还有maven.eclipse.org,这可能对某些工件很有用。但是,如果似乎没有任何东西可以满足您的特定问题。)

对于一般情况:

通常,虽然您无法在maven存储库中找到所有eclipse工件。因此,如果您无法在maven仓库中找到所需内容,则需要自己在Eclipse p2存储库中找到它。假设您想要Eclipse {3.8}的org.eclipse.jdt.core ...

Eclipse Project Update Sites wiki页面说明3.8.x的更新站点是

http://download.eclipse.org/eclipse/updates/3.8

这实际上是3.8,3.8.1的'复合'p2存储库......接下来我们需要弄清楚3.8.1存储库的名称。以下内容获取包含compositeArtifacts.xml的jar文件,其中列出了子存储库和3.8.1的greps:

curl -s http://download.eclipse.org/eclipse/updates/3.8/compositeArtifacts.jar | \
  gunzip -c | \
  grep '3\.8\.1'

结果?

<child location='R-3.8.1-201209141540'/>

该位置是相对路径。它告诉我们3.8.1存储库位于

http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/

现在获取该存储库的工件索引。同样,jar中的单个XML文件。但这一次,它不是一个复合存储库,所以我们只要求artifacts.jar

curl -s http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/artifacts.jar | \
  gunzip -c | \
  grep org.eclipse.jdt.core[\'\"] | \
  sort -u

结果:

<artifact classifier='osgi.bundle' id='org.eclipse.jdt.core' version='3.8.2.v20120814-155456'>

(我不确定为什么3.8.1中的org.eclipse.jdt.core的版本开始为3.8.2,但就是这样。让我们按下...)

现在我们可以根据刚刚提取的artifacts.xml中的<mappings>元素将URL拼接在一起。将“plugins /”添加到存储库路径;将版本添加到插件名称,然后我们可以获取它:

curl -Os http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/plugins/org.eclipse.jdt.core_3.8.2.v20120814-155456.jar

如果您发现自己需要的不仅仅是一个或两个罐子,那么在运行sbt构建之前,您可能会考虑使用TychoEclipse p2 Ant tasks将所需的工件解析为lib文件夹