En términos generales, hay dos enfoques para integrar maravilloso con Java:
- Hacer la compilación de código Java y ejecutar código Groovy en tiempo de ejecución
- Compilar y paquete de código Groovy como parte de su construcción, al igual lo hace para código Java
Utilice 1. si necesita una solución de "secuencias de comandos" y el código de Groovy que se ejecutará solo se conoce en tiempo de ejecución. Por ejemplo, el código podría cargarse desde una base de datos o ingresarse en una pantalla GUI. Si simplemente desea hacer su vida más fácil al escribir algunas partes de su aplicación en Groovy, vaya con 2. Dos ejemplos típicos en los que esto puede dar resultados rápidamente son el análisis y las pruebas de XML (por supuesto, hay muchos más).
Suponiendo que está más interesado en 2., puede compilar Groovy y Java por separado o en conjunto. Si los compila por separado, las referencias estáticas solo pueden ir en una dirección, como si tuviera dos módulos Java. Si los compila juntos, puede mezclar el código de Groovy y Java arbitrariamente, como si fuera todo código Java en el mismo módulo.
La compilación de código Java y Groovy es posible gracias a la función de compilación Groovy llamada compilación conjunta. Desafortunadamente, GMaven tiene serios problemas con la compilación conjunta, y no hay señales de que esto cambie pronto. Para proyectos más pequeños, puedes salirte con la tuya, pero para proyectos más grandes te morderá (he estado allí). Hay soluciones, pero no vienen gratis. Si está abierto a las alternativas de (G) Maven, considere cambiar a Gradle, que tiene soporte Groovy mucho mejor. (Descargo de responsabilidad: soy uno de los desarrolladores de Gradle.)
Si decide seguir con GMaven, asegúrese de obtener su configuración correcta. Casi todos los proyectos que veo fallan en este paso, a menudo sin darnos cuenta. La documentación de GMaven está desactualizada, pero la lista de correo de Groovy contiene varias publicaciones sobre el tema. También puede copiar la configuración desde Spock (uno de mis propios proyectos).
Para habilitar la compilación conjunta de GMaven, agregue el objetivo generateStubs
. Siempre que su proyecto compile sin este objetivo, omítalo. También hay un objetivo generateTestStubs
, pero rara vez es necesario.
Esta es la historia corta. Para la larga historia, echa un vistazo al próximo libro de Manning Making Java Groovy. (No estoy afiliado con el autor.)
¿Has usado el compilador Groovy-Eclipse para la compilación conjunta? Se engancha en el plugin maven-compiler. –