При запуске скриптов Groovy с помощью Groovy-all jar, как вы указываете путь к классам?

Я нашел пример запуска скриптов Groovy в системах, в которых Groovy не установлен с помощью файла groovy-all jar. Я попытался сделать следующее:--3-->

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

проблема в том, что мой скрипт зависит от jars в каталоге lib плюс два других файла сценария Groovy, расположенных в src/com / examples. Когда я запускаю это, он жалуется на операторы import для всех из них. Я могу запустить его в системе, в которой установлен Groovy, используя следующий:

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

Как запустить скрипты Groovy таким образом, используя банку groovy-all, а также дать ей путь к классам?

2 ответов


вы не можете объединить оба -jar и -cp на java command, поэтому вам нужно явно назвать основной класс. Глядя на манифест groovy-all JAR, имя основного класса groovy.ui.GroovyMain, так что вам нужно

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

(если groovy-все еще не были покрыты lib/* вам нужно будет добавить это в -cp так же).


один из способов-скомпилировать файлы Groovy в "*.файл класса. Затем включите банку из каталога $GROOVY_HOME/embeddable и поместите ее в путь к классам.

вот минималистский пример (первая строка-простая копия 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 (т. е. файлами классов) в нем.