2012-09-12 21 views
8

He encontrado un ejemplo para ejecutar scripts Groovy en sistemas que no tienen instalado Groovy utilizando el archivo jar groovy-all. Me trató lo siguiente:Cuando se ejecutan scripts Groovy usando el contenedor groovy-all, ¿cómo se especifica un classpath?

java -cp src:.:lib/* -jar lib/groovy-all-2.0.1.jar src/com/example/MyScript.groovy 

El problema es que mi script depende de frascos en el directorio lib, además de otros dos archivos de script Groovy ubicadas en src/com/ejemplos. Cuando ejecuto esto, se queja de las declaraciones de importación para todos ellos. Puedo ejecutarlo en un sistema que se ha instalado bien mediante el uso maravilloso de lo siguiente:

CLASSPATH="src:.:lib/*" groovy src/com/example/MyScript.groovy 

¿Cómo se ejecuta guiones maravillosos de esta manera, con el maravilloso, todo el tarro, así como darle una ruta de clases?

Respuesta

18

No puede combinar ambos -jar y -cp en un comando java, por lo que debe nombrar explícitamente la clase principal. Mirando el manifiesto del groovy-all JAR, el nombre de la clase principal es groovy.ui.GroovyMain, por lo que necesita

java -cp 'src:.:lib/*' groovy.ui.GroovyMain src/com/example/MyScript.groovy 

(si es maravilloso todo, no estuvieran cubiertos por lib/* que tendría que añadir que a la -cp también).

1

Una forma es compilar los archivos de Groovy en archivos "* .class". A continuación, incluya el jar del directorio $ GROOVY_HOME/incrustable y colóquelo en classpath.

Aquí está un ejemplo minimalista (la primera línea es un simple copia de Unix, el uso lo que funcione para usted):

$ cp /some-dir/groovy-1.8.5/embeddable/* . 
$ groovyc Test.groovy 
$ java -cp . groovy-all-1.8.5.jar Test 

Para la distribución típica, utilizaría Ant/Maven/Gradle para construir su propia jarra archivo con Groovy compilado (es decir, archivos de clase) en él.

Cuestiones relacionadas