2011-05-16 11 views
5

Me gustaría usar @Grape en mi programa groovy, pero mi programa consta de varios archivos. Los ejemplos en el Groovy Grape page parecen suponer que su secuencia de comandos constará de un archivo. ¿Cómo puedo hacer esto? ¿Debo simplemente agregarlo a uno de los archivos y esperar que las importaciones funcionen desde los demás? Si es así, ¿es común colocar todas las llamadas @Grape en un archivo sin otro código? ¿Debo agregar la llamada Grape a todos los archivos que importarán el paquete? ¿Debo descargar el archivo JAR y crear un archivo Gradle, del que ya me estaba escapando en este momento?@Grape en scripts con varios archivos

Respuesta

4

el motor de uva y la anotación @grab se crearon como parte de core groovy con scripts de archivo único en mente, para permitir que un trozo de texto se convierta fácilmente en un programa completamente funcional.

para aplicaciones más grandes, gradle es una increíble herramienta de compilación con muchas características útiles.

pero sí, puede administrar todas las dependencias de aplicaciones solo con grape.
ya sea que anote cada archivo o solo uno no importa, solo asegúrese de que el archivo anotado @grab se lea antes de intentar usar la clase externa.
anotar la clase principal es probablemente mejor, ya que perderá fácilmente la pista de las versiones de la biblioteca si tiene las anotaciones dispersas.

y sí, usted considere considere gradle para cualquier aplicación con más de una docena de archivos o cualquier cosa que desee reutilizar en otro lugar como biblioteca.

1

En mi opinión, todo depende de cómo su programa se va a ejecutar ...

Si el programa se va a ejecutar como una colección de secuencias de comandos independientes, entonces probablemente me quedo la @Grab requerida para cada secuencia de comandos en la parte superior de cada uno de ellos.

Si su programa es más de estándar programa de estilo con un único punto de entrada, entonces usaría una herramienta de compilación como Gradle (como usted dice), ya que obtiene muchas ganancias fáciles por usándolo

En primer lugar, hace que sea fácil de definir sus dependencias (y build a single large jar que contienen todos ellos)

En segundo lugar, Gradle hace que sea muy fácil para empezar a escribir pruebas, incluye plugins de cobertura de código, o herramientas útiles like codenarc sugerir posibles arreglos o mejoras a su código. Todo esto tiene un valor incalculable no solo para mejorar su código (o saber que su código funciona), sino también cuando refactoriza su código, sabe que no ha roto nada de lo que solía funcionar.

+0

La pregunta era sobre lo que tengo que hacer, no lo que es apropiado. Creo que ambas opciones funcionarán, pero ¿son las únicas? ¿Puedo poner la llamada @Grape en un solo lugar sin usar Gradle? – dromodel