如何将JDT添加为Maven依赖项?

时间:2014-03-21 01:28:18

标签: java eclipse maven eclipse-jdt

我正在尝试创建一个依赖于JDT core的项目。我正在使用Maven中心的条目,直到我意识到它们是several years out of date。经过一点点探索后,我遇到了https://repo.eclipse.org。我找到了我需要的存储库并添加了它:

<repository>
    <id>eclipse</id>
    <name>Eclipse Repository</name>
    <url>https://repo.eclipse.org/content/groups/eclipse/</url>
</repository>
...
<dependency>
    <groupId>org.eclipse.jdt</groupId>
    <artifactId>org.eclipse.jdt.core</artifactId>
    <version>3.10.0.v20140316-0146</version>
</dependency>

但后来我开始收到错误:

  

无法解析类型org.eclipse.core.runtime.IProgressMonitor。   它是从所需的.class文件间接引用的

我设法在其中一个Nexus存储库中找到了类型并添加了它:

<repository>
    <id>eclipse-acceleo</id>
    <name>Eclipse Repository</name>
    <url>https://repo.eclipse.org/content/groups/acceleo/</url>
</repository>
...
<dependency>
    <groupId>org.eclipse.equinox</groupId>
    <artifactId>org.eclipse.equinox.common</artifactId>
    <version>3.6.200.v20130402-1505</version>
</dependency>

现在我收到了错误

  

无法解析类型org.eclipse.core.runtime.Plugin。它是   间接引用所需的.class文件

我无法在任何Nexus存储库中找到该类。 org.eclipse.jdt.core.JavaCore是引用org.eclipse.core.runtime.Plugin的类。

<击> 1。我需要添加哪个依赖项才能包含org.eclipse.core.runtime.Plugin
 2.有没有更好的方法将JDT作为依赖包含在Maven中?

/ E1

我在http://grepcode.com的帮助下找到了org.eclipse.core.runtime.Plugin。这次,Maven Central中的最新依赖(而不是Eclipse的Nexus repo中):

<dependency>
    <groupId>org.eclipse.core</groupId>
    <artifactId>runtime</artifactId>
    <version>3.9.100-v20131218-1515</version>
</dependency>

现在,当我尝试运行测试时,我得到了以下异常:

java.lang.NoClassDefFoundError: org/eclipse/core/resources/IResource
    at org.eclipse.jdt.core.dom.ASTParser.<init>(ASTParser.java:177)
    at org.eclipse.jdt.core.dom.ASTParser.newParser(ASTParser.java:126)
    .
    .
    .
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.resources.IResource
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 30 more

此时我正在考虑下载完整的JAR并将其添加为系统依赖项。有没有更好的方法将JDT添加为Maven依赖?

3 个答案:

答案 0 :(得分:6)

临时解决方案,直到找到更好的解决方案(Maven中心的所有依赖项):

<dependency>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>org.eclipse.jdt.core</artifactId>
    <version>3.9.1.v20130905-0837</version>
</dependency>
<dependency>
    <groupId>org.eclipse.core</groupId>
    <artifactId>runtime</artifactId>
    <version>3.9.100-v20131218-1515</version>
</dependency>
<dependency>
    <groupId>org.eclipse.birt.runtime</groupId>
    <artifactId>org.eclipse.core.resources</artifactId>
    <version>3.8.101.v20130717-0806</version>
</dependency>

答案 1 :(得分:3)

Eclipse JDT is now available on maven central使用新方法发布工件。对于最终用户来说,不再需要解决方法,poms是用户友好的(简单版本号,依赖项的标准maven元数据,源工件,第三方依赖...)。

只需将其添加到您的pom:

<dependency>
  <groupId>org.eclipse.jdt</groupId>
  <artifactId>org.eclipse.jdt.core</artifactId>
  <version>3.12.2</version>
</dependency>

查看完整示例here

答案 2 :(得分:0)

在maven资源库中找到的更新版本

  <dependencies>
    <dependency>
        <groupId>org.eclipse.tycho</groupId>
        <artifactId>org.eclipse.jdt.core</artifactId>
        <version>3.12.0.v20160516-2131</version>
    </dependency>

    <dependency>
        <groupId>org.eclipse.core</groupId>
        <artifactId>runtime</artifactId>
        <version>LATEST</version>
    </dependency>

    <dependency>
        <groupId>org.eclipse.core</groupId>
        <artifactId>resources</artifactId>
        <version>LATEST</version>
    </dependency>
</dependencies>