среда, 27 июня 2012 г.

Как запустить groovy-скрипт?

Помню, в первом семестре первого курса университета на занятиях по информатике от нас требовали знать X способов включения компьютера, Y способов запуска программы и Z способов завершения работы...
Наверное, разработчиков Groovy учили приблизительно тому же - иначе зачем они придумали столько способов запуска groovy-скрипта? Итак.

1) Сохранить скрипт в текстовом файле с именем *.groovy и запустить его из командной строки:
C:\examples>type Example.groovy
println "Good bye, world!"
C:\examples>groovy Example    //в качестве параметра передаём имя файла
Good bye, world!
C:\examples>Example.groovy    //работает, если в системе существует привязка расширения groovy к GDK
Good bye, world!
2) Скомпилировать в java класс и запустить с помощью java:
C:\examples>dir
 Directory of C:\examples
 27.06.2012  09:55       26 Example.groovy

C:\examples>groovyc Example.groovy
 
C:\examples>dir
 Directory of C:\examples
 27.06.2012  09:56  6 805 Example.class
 27.06.2012  09:56       26 Example.groovy

C:\examples>java -cp .;"%GROOVY_HOME%\emdeddable\groovy-all-1.8.6.jar" Example
 Good bye, world!
3) Выполнить код с помощью groovy shell:
C:\examples>groovyc Example.groovy
Groovy Shell <1.8.6, JVM: 1.6.0_29>
Type 'help' or '\h' for help.
--------------------------------------------------
groovy:000> println "Good bye, world!"
Good bye, world!
===> null
groovy:000> class Person {
groovy:001> def Name
groovy:002> def Family
groovy:003> def whatIsYrName () { "My name is ${Name} ${Family} " }
groovy:004> }
===> true
groovy:000> whoIs = new Person ( Family: "Zombie", Name: "Ivan" )
===> Person@1716fa0
groovy:000> whoIs.whatIsYrName()
===> My name is Ivan Zombie
4) Сохранить скрипт в текстовом файле с именем *.groovy и запустить его с помощью java и GroovyShell (своего рода комбинация предыдущих способов):
Пусть src содержит groovy скрипты, lib - библиотеки (обязательно нужна groovy-all-[version].jar). Тогда для запуска пригодится такой полезный стартовый bat-файл :
rem set JAVA_HOME=c:\Program Files\Java\jdk1.6.0_29
rem set PATH=%JAVA_HOME%\bin
   
set CUR_DIR=%~dp0
set LIB_DIR=%CUR_DIR%lib
set CLASSPATH=%LIB_DIR%\*
set JAVA_OPTS=-Xms256m -Xmx528m -XX:MaxPermSize=256m -Dgroovy.source.encoding=UTF8 -Dfile.encoding=UTF-8

set SCRIPT_HOME=%CUR_DIR%src
set MAIN_SCRIPT=%SCRIPT_HOME%\Example.groovy
call java -cp %CLASSPATH%;%SCRIPT_HOME% groovy.lang.GroovyShell %MAIN_SCRIPT% %*
5) Выполнить код в groovy console:
C:\examples>groovyConsole


Окно groovy console
Окно groovy console

6) Работать прямо из командной строки

6.1) ключ -e - исполнение кода, записанного в командной строке:
C:\examples>groovy -e "println 'Good bye, world!'"
Good bye, world!
C:\examples>groovy -e "println 'Good bye, ' + args.join(' or ') + ' world!'" this that
Good bye, this or that world!
6.2) переменная line и ключи -n -e - обработка каждой строки из входного потока:
C:\examples>type Test-6-2.txt
some text line
C:\examples>type Test-6-2.txt | groovy -n -e "println line.toUpperCase()"
SOME TEXT LINE
C:\examples>type Test-6-2.txt | groovy -n -e "line.split(/\s+/).each { println it; }"
some
text
line
6.3) ключ -i - обработка файла с созданием резервной копии (.bak)
C:\examples>dir
 Directory of C:\examples
 27.06.2012  10:41     14 Test-6-2.txt
C:\examples>type Test-6-2.txt
some text line
C:\examples>groovy -p -i .bak -e "println line.toUpperCase()" Test-6-2.txt
C:\examples>dir
 Directory of C:\examples
 27.06.2012  11:13     16 Test-6-2.txt
 27.06.2012  10:41     14 Test-6-2.txt.bak
C:\examples>type Test-6-2.txt
SOME TEXT LINE
C:\examples>type Test-6-2.txt.bak
some text line

И хотя некоторые из имеющихся способов подходят, скорее, для людей, "знающих толк в извращениях", тем не менее, пространство для выбора достаточно большое.

Комментариев нет:

Отправить комментарий