6

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

4

1 回答 1

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 存储库中找到它。假设您想要org.eclipse.jdt.coreEclipse 3.8.1…</p>

Eclipse 项目更新站点wiki 页面说 3.8.x的更新站点是

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

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

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'>

(我不确定为什么org.eclipse.jdt.core在 3.8.1 中有一个以 3.8.2 开头的版本,但就是这样。让我们继续……)

<mappings>所以现在我们可以根据刚刚获取的 artifacts.xml 中的元素来拼接 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

如果您发现自己需要的不仅仅是一两个 jar,您可能会考虑使用TychoEclipse p2 Ant 任务在运行 sbt 构建之前将所需的工件解析到 lib 文件夹中。

于 2012-10-20T18:11:03.403 回答