2008-10-09 17 views
15

Tengo un montón de código fuente de Java que requiere un preprocesamiento personalizado. Me gustaría deshacerme de él, pero eso no es factible en este momento, así que estoy atascado con eso. Dado que tengo un desafortunado problema que no debería haber existido desde el principio, ¿cómo lo resuelvo usando maven?Preprocesamiento del código fuente como parte de una compilación de maven

(Para la historia completa, estoy reemplazando un sistema de compilación basado en python con uno maven, así que una mejora a la vez por favor. Reparar el código fuente no estándar es más difícil, y vendrá más tarde.)

¿Es posible usar cualquier plugin Maven existente para alterar realmente los archivos fuente durante el tiempo de compilación? (Obviamente, dejar solo el código original no procesado)

Para ser claros, preprocesamiento me refiero a preprocesamiento en el mismo sentido que una antena o un compilador de C preprocesar el código, y por costumbre quiero decir que es completamente de propiedad y no se ve nada como C o preprocesamiento de antena.

Respuesta

9

Esto es algo que es muy factible y yo ' he hecho algo muy similar en el pasado.

Un ejemplo de un proyecto de mina, donde utilicé el antRun plug-in para ejecutar un programa externo para procesar fuentes:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>process-sources</id> 
      <phase>process-sources</phase> 
      <configuration> 
      <tasks> 
       <!-- Put the code to run the program here --> 
      </tasks> 
      </configuration> 
      <goals> 
      <goal>run</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

Nota de la etiqueta en la que indican la fase en la que este se ejecuta. La documentación para los ciclos de vida en Maven es here. Otra opción es escribir tu propio plug-in Maven que hace esto. Es un poco más complejo, pero también es factible. Todavía lo configurará de manera similar a lo que he documentado aquí.

+0

Eso es muy útil, gracias. Creo que la parte con la que estoy luchando es cómo procesar el código en una copia de ese código, y luego hacer que Maven compile la copia en lugar del original. Creo que tal vez necesito entender mejor los fundamentos de Maven. – izb

+0

-1: no está respondiendo la pregunta, solo proporciona los medios para lograrlo. En otras palabras, ¿qué pones en tareas? –

2

Los plugins de Maven pueden engancharse en el proceso de compilación en el momento de la compilación sí, en cuanto a si los existentes ayudarán o no tengo ni idea.

Escribí un plugin de maven hace un par de años como parte de un proyecto universitario, y aunque la documentación era un poco deficiente en ese momento, no era demasiado complicado. Por lo tanto, puede considerar hacer su propio, debe haber muchos proyectos de código abierto de los que pueda extraer ideas o código (el nuestro tenía licencia BSD, por ejemplo ...)

Cuestiones relacionadas