我注意到许多项目将 org.jdt.core jar 放在lib 文件夹中,因为它在 maven 存储库中不可用。我正在使用的构建工具 sbt 可以直接从 URL 中提取依赖项。但是,我在 Eclipse 下载页面上找不到任何指向该 jar 的直接链接。我可以找到的关闭是整个jdt zip的链接,其中包括许多 jar 文件。我不相信 sbt 可以从 zip 依赖项中提取 jar。是否有直接链接或其他解决方法?
1 回答
取决于您想要的版本是否已经在存储库中。
对于 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.core
Eclipse 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,您可能会考虑使用Tycho或Eclipse p2 Ant 任务在运行 sbt 构建之前将所需的工件解析到 lib 文件夹中。