2011-11-03 8 views
5

Estoy desarrollando el conector m2e para el plugin out maven, que en realidad genera algunas fuentes. Necesito agregar fuentes generadas (carpeta) al espacio de trabajo como carpeta fuente.Agregue programáticamente carpeta de origen desde el complemento Eclipse

que utilizan javacore para el archivo de edición .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); 

Pero este código no funciona dice: Ruta para IClasspathEntry debe ser absoluta

Si tratara de usar ruta absoluta, se ha escrito en .classpath, pero en eclipse no se mostró como carpeta de origen.

¿Alguien alguna sugerencia? Debería ser una tarea fácil, pero no puedo resolver cómo resolverlo.

Respuesta

5

Problema resuelto ... que era más fácil de lo que esperaba ...

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); 

Y esto añadirá entrada origen a .classpath archivo:

+0

¡Gracias, señor! Aunque no puedo probarlo en este momento, espero poder utilizar esta información mañana. Es posible que me hayas ahorrado un gran dolor de cabeza dada la escasa documentación que hay sobre el tema. – Vectovox

0

Pruebe uno de los métodos JavaCore.newSourceEntry(...) en lugar de JavaCore.newProjectEntry(...).

+0

mi error ... escribí mal código. Probé JavaCore.newProjectEntry (...) y hubo una excepción: la ruta para IClasspathEntry debe ser absoluta –

Cuestiones relacionadas