2010-10-23 20 views
5

He sido un usuario por mucho tiempo del sistema de compilación Make, pero he decidido comenzar a aprender el sistema de compilación Maven. Si bien he leído la mayoría de los documentos en línea, ninguno parece darme las analogías que estoy buscando. Entiendo el ciclo de vida del sistema, pero no he visto una referencia para compilar dependencias de pasos. Por ejemplo, quiero generar una gramática JFlex como parte del paso del ciclo de vida de la compilación. Actualmente, no veo forma de convertir ese paso en un paso de fase de precompilación. La documentación parece estar limitada en esto. En general, el concepto de dependencias escalonadas parece estar incorporado en Maven y requiere un complemento para cualquier alteración. ¿Es este el caso? Qué me estoy perdiendo, porque actualmente el sistema de compilación Maven parece muy limitado en cuanto a cómo puede configurar los pasos de compilación.Moviéndome a Maven desde GNUMake

Respuesta

4

Puedes hacer cualquier cosa en Maven. Por lo general, tiene una forma predeterminada de hacer cada cosa, y luego puede enganchar y anular si desea hacer algo especial. A veces se necesita mucho Stack Overflowing y rascarse la cabeza para resolverlo.

Incluso hay un JFlex Maven plugin oficial.

Siempre que sea posible, busque a alguien que haya hecho un plugin de Maven que haga lo que quiera. Incluso si no es 100% correcto, al menos puede darte una idea sobre cómo hacer que Maven haga algo.

Configuración mínima

Esta configuración genera código Java de un programa de análisis de todos los archivos de gramática ( .jflex, .jlex *, * .lex, .flex) que se encuentra en src/main/JFlex/y sus subdirectorios. El nombre y el paquete del código fuente Java generado son los definidos en la gramática. El código fuente generado de Java se coloca en target/generated-source/jflex, en subdirectorios siguiendo la convención de Java sobre nombres de paquetes. pom.xml

<project> 
    <!-- ... --> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>de.jflex</groupId> 
     <artifactId>jflex-maven-plugin</artifactId> 
     <version>1.6.0</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>generate</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    <!-- ... --> 
    </build> 
    <!-- ... --> 
</project> 

Esto se siente como la forma de hacer las cosas experto. Coloque sus cosas en las carpetas correctas (src/main/flex), y este complemento lo integrará automáticamente en su proyecto. Si quiere do fancier custom stuff, there are some options. pero Maven se trata de favorecer la convención sobre la configuración.

+0

Oh bien, fue ese objetivo de ejecución lo que funcionó. Creo que tendré que regresar y ver exactamente qué hace eso. ¿Entonces el gancho para complementos está agregando una ejecución y se ejecuta durante el ciclo de vida? – dcolish

+0

Evenrything en Maven es un complemento, incluso si no lo ves. Para querer hacer un cambio, el primer paso es tomar uno de los complementos incorporados y cambiar la configuración un poco ... Cuando los complementos integrados no hacen algo, puede ir a buscar con complementos de terceros. Si no tienes suerte, puedes hacer tu propia :) – bwawok

0

Para ser sincero, creo que su mentalidad actual se asigna mucho mejor a la hormiga que a maven, y sugiero que empiece con eso.

+0

¿Eso significa que Maven no es capaz de agregar tareas de compilación adicionales para compilar? Supongo que podría poner los pasos de compilación en un archivo ant y tener mvn acaba de ejecutar eso. Sin embargo, esa solución parece un poco fea. – dcolish

+0

Puedes hacer cualquier cosa en Maven. Responderá más en una nueva respuesta. – bwawok

+0

No dije que maven no podría hacerlo. Dije que tu forma de pensar está más cerca de la hormiga (que proviene de la marca) que maven. –

Cuestiones relacionadas