当使用Groovy-all-jar运行Groovy脚本时,如何指定类路径



我发现了一个使用Groovy-all-jar文件在没有安装Groovy的系统上运行Groovy脚本的例子。我尝试了以下操作:

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

问题是,我的脚本依赖于lib目录中的jar以及src/com/examples中的另外两个Groovy脚本文件。当我运行这个程序时,它会抱怨所有这些程序的import语句。我可以使用以下命令在安装了Groovy的系统上运行它:

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

如何使用Groovy-all-jar以这种方式运行Groovy脚本,并为其提供类路径?

不能在java命令中同时组合-jar-cp,因此需要显式命名主类。查看groovy-allJAR的清单,主类名是groovy.ui.GroovyMain,因此需要

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

(如果groovy all还没有被lib/*覆盖,那么您也需要将其添加到-cp中)。

一种方法是将Groovy文件编译为"*.class"文件。然后包括$GROVY_HOME/可嵌入目录中的jar,并将其放在类路径中。

这里有一个极简主义的例子(第一行是一个简单的Unix副本;使用任何适合你的东西):

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

对于典型的发行版,您可以使用Ant/Maven/Gradle构建自己的jar文件,其中包含已编译的Groovy(即类文件)

最新更新