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