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

Yuv*_*ory 6 maven sbt eclipse-jdt

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

Mar*_*lis 15

取决于您想要的版本是否已存在于存储库中.

对于org.eclipse.jdt.core:

tycho项目似乎部署了一些版本的org.eclipse.jdt.core中央.看到:

http://central.maven.org/maven2/org/eclipse/tycho/org.eclipse.jdt.core/
Run Code Online (Sandbox Code Playgroud)

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

(请注意,还有一个maven.eclipse.org,它可能对某些工件有用.但是,如果似乎没有任何东西适合您的特定问题.)

对于一般情况:

一般来说,虽然你无法在maven存储库中找到所有的eclipse工件.因此,如果您无法在maven仓库中找到所需内容,则需要自己在Eclipse p2存储库中找到它.假设您想要org.eclipse.jdt.coreEclipse 2.0.1 ...

Eclipse项目更新网站维基页面说,对3.8.x的更新站点

http://download.eclipse.org/eclipse/updates/3.8
Run Code Online (Sandbox Code Playgroud)

这实际上是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'
Run Code Online (Sandbox Code Playgroud)

结果?

<child location='R-3.8.1-201209141540'/>
Run Code Online (Sandbox Code Playgroud)

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

http://download.eclipse.org/eclipse/updates/3.8/R-3.8.1-201209141540/
Run Code Online (Sandbox Code Playgroud)

现在获取该存储库的工件索引.同样,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
Run Code Online (Sandbox Code Playgroud)

结果:

<artifact classifier='osgi.bundle' id='org.eclipse.jdt.core' version='3.8.2.v20120814-155456'>
Run Code Online (Sandbox Code Playgroud)

(我不确定为什么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
Run Code Online (Sandbox Code Playgroud)

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