2012-09-12 4 views
8

Ich habe ein Beispiel für das Ausführen von Groovy-Skripten auf Systemen gefunden, auf denen Groovy nicht mit der groovy-all-JAR-Datei installiert wurde. Ich habe versucht, die folgenden:Wenn Sie Groovy-Skripte mit dem groovy-all jar ausführen, wie geben Sie einen Klassenpfad an?

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

Das Problem ist mein Skript im Verzeichnis lib auf Gläsern hängt plus zwei weitere Groovy Script-Dateien in src/com/examples. Wenn ich das ausführe, beschwert es sich über die Importanweisungen für alle von ihnen. Ich kann es auf einem System ausführen, das Groovy mithilfe der folgenden feinen installiert hat:

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

Wie kann ich Groovy-Skripte auf diese Weise, mit der groovy-all-Glas, sowie geben ihm eine Classpath laufen?

Antwort

18

Sie können -jar und -cp in einem java Befehl nicht kombinieren, daher müssen Sie die Hauptklasse explizit benennen. Mit Blick auf das Manifest der groovy-all JAR, ist die Hauptklasse Name groovy.ui.GroovyMain, so müssen Sie

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

(wenn groovy-all nicht bereits von lib/* bedeckt waren Sie müssten, dass auch an den -cp hinzufügen).

1

Eine Möglichkeit besteht darin, die Groovy-Dateien in "* .class" -Dateien zu kompilieren. Dann schließe das Jar aus dem Verzeichnis $ GROOVY_HOME/embeddable ein und lege es in den Klassenpfad.

hier ein minimalistisches Beispiel ist (die erste Zeile eine einfache Unix Kopie ist, verwenden, was für Sie arbeitet):

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

Für typische Verteilung, würden Sie Ant/Maven/Gradle benutzen, um Ihr eigenes Glas zu bauen Datei mit dem kompilierten Groovy (dh Klassendateien) darin.

Verwandte Themen