以编程方式从Eclipse插件添加源文件夹

时间:2011-11-03 11:07:03

标签: eclipse classpath eclipse-jdt

我正在开发用于out maven插件的m2e连接器,它实际上生成了一些来源。我需要将生成的源(文件夹)作为源文件夹添加到工作区。

我使用 JavaCore 编辑.classpath文件:

    IJavaProject javaProject = JavaCore.create(proj);
    IClasspathEntry[] entries = javaProject.getRawClasspath();

    IClasspathEntry[] newEntries = new IClasspathEntry[entries.length + 1];
    System.arraycopy(entries, 0, newEntries, 0, entries.length);

    Path myPath = new Path("target/generated-sources");
    IClasspathEntry myEntry = JavaCore.newSourceEntry(myPath);

    newEntries[entries.length] = JavaCore.newSourceEntry(myEntry.getPath());
    javaProject.setRawClasspath(newEntries, null);

但是这段代码没有用,它说: IClasspathEntry的路径必须是绝对的

如果我尝试使用绝对路径,它已写入.classpath但在eclipse中它没有显示为源文件夹。

有人有任何建议吗?这应该是一件容易的事,但我无法弄清楚如何解决它。

2 个答案:

答案 0 :(得分:7)

问题解决了......比我预期的要容易......

IJavaProject javaProject = JavaCore.create(proj);
IClasspathEntry[] entries = javaProject.getRawClasspath();

IClasspathEntry[] newEntries = new IClasspathEntry[entries.length + 1];
System.arraycopy(entries, 0, newEntries, 0, entries.length);

IPath srcPath= javaProject.getPath().append("target/generated-sources");
IClasspathEntry srcEntry= JavaCore.newSourceEntry(srcPath, null);

newEntries[entries.length] = JavaCore.newSourceEntry(srcEntry.getPath());
javaProject.setRawClasspath(newEntries, null);

这将为 .classpath 文件添加源条目:      

答案 1 :(得分:0)

尝试使用JavaCore.newSourceEntry(...)方法之一代替JavaCore.newProjectEntry(...)