Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a direct link to the eclipse.jdt.core jar?

I've noticed many projects put the org.jdt.core jar in a lib folder because it's not available in a maven repository. sbt, the build tool I'm using, can pull a dependency straight from a URL. However, I can't find any direct links to the jar on the eclipse downloads page. The closes I can find is a link to the entire jdt zip which includes many jar files. I don't believe sbt can extract a jar from a zip dependency. Is there a direct link, or some other workaround?

like image 734
Yuvi Masory Avatar asked Oct 20 '12 15:10

Yuvi Masory


People also ask

What is Eclipse JDT core compiler?

org.eclipse.jdt.core. The Java model is the set of classes that model the objects associated with creating, editing, and building a Java program. org.eclipse.jdt.core.compiler. This package contains compiler associated infrastructure APIs.

What is ECJ jar file?

ecj is the batch compiler from Eclipse and is available as ecj. jar. Since 3.3, this jar also contains the support for jsr199 (Compiler API) and the support for jsr269 (Annotation processing). In order to use the annotations processing support, a 1.6 VM is required.


1 Answers

Depends whether the version you want is already in a repository or not.

For org.eclipse.jdt.core:

The tycho project seems to deploy some versions of org.eclipse.jdt.core to central. See:

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

I found that using search.maven.org. One of those might be good enough for your needs. But they don't seem to have the 'official' binaries, just rebuilds of them.

(Note that there's also a maven.eclipse.org, which might be useful for some artifacts. But if doesn't seem to have anything to suit your particular problem.)

For the general case:

In general, though you can't find all the eclipse artifacts in maven repositories. So if you can't find what you want in a maven repo, you'll need to find it in the Eclipse p2 repositories yourself. Let's say you want the org.eclipse.jdt.core for Eclipse 3.8.1…

The Eclipse Project Update Sites wiki page says the update site for 3.8.x is

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

That's actually a 'composite' p2 repository for 3.8, 3.8.1, … So next we need to figure out the name of the 3.8.1 repository. The following fetches a jar file containing compositeArtifacts.xml, which lists the child repositories, and greps for 3.8.1:

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

The result?

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

That location is a relative path. It tells us the 3.8.1 repository is at

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

Now to fetch the artifact index for that repository. Again, a single XML file in a jar. But this time, it's not a composite repository, so we just ask for 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

Result:

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

(I'm not sure why org.eclipse.jdt.core in 3.8.1 has a version beginning 3.8.2, but that's the way it is. Let's press on…)

So now we can stitch together the URL according to the <mappings> element in the artifacts.xml we just fetched. Add 'plugins/' to the repository path; add the version to the plugin name, and then we can fetch it:

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

If you find yourself needing more than just one or two jars, you might look into using Tycho, or the Eclipse p2 Ant tasks to resolve the artifacts you need into a lib folder before you run your sbt build.

like image 51
Martin Ellis Avatar answered Sep 30 '22 20:09

Martin Ellis