Программно добавить исходную папку из плагина Eclipse - PullRequest
7 голосов
/ 03 ноября 2011

Я занимаюсь разработкой коннектора m2e для нашего плагина maven, который на самом деле генерирует некоторые источники. Мне нужно добавить сгенерированные источники (папку) в рабочую область как исходную папку.

Я использовал 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 ]

7 голосов
/ 09 ноября 2011

Проблема решена ... это было проще, чем я ожидал ...

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 файл:

0 голосов
/ 03 ноября 2011

Попробуйте один из JavaCore.newSourceEntry(...) методов вместо JavaCore.newProjectEntry(...).

...