Статьи

Gradle Good: запуск Groovy-скриптов как приложения

В предыдущем посте мы узнали, как запустить приложение Java в проекте Gradle. Исходный файл Java с методом main является частью проекта, и мы используем задачу JavaExec для запуска кода Java. Мы можем использовать ту же задачу JavaExec для запуска файла скрипта Groovy.

Файл сценария Groovy не имеет явного метода main , но он добавляется при компиляции файла сценария. Имя файла сценария также является именем сгенерированного класса, поэтому мы используем это имя для main свойства задачи JavaExec . Давайте сначала создадим простой файл скрипта Groovy для отображения текущей даты. Мы можем передать дополнительный аргумент с форматом даты, который мы не хотим использовать.

01
02
03
04
05
06
07
08
09
10
// File: src/main/groovy/com/mrhaki/CurrentDate.groovy
package com.mrhaki
 
// If an argument is passed we assume it is the
// date format we want to use.
// Default format is dd-MM-yyyy.
final String dateFormat = args ? args[0] : 'dd-MM-yyyy'
 
// Output formatted current date and time.
println "Current date and time: ${new Date().format(dateFormat)}"

Наш файл сборки Gradle содержит runScript задачи типа JavaExec . Мы полагаемся на библиотеки Groovy, включенные в Gradle, потому что мы используем localGroovy() как зависимость компиляции. Конечно, мы можем изменить это, чтобы ссылаться на другую версию Groovy, если мы хотим использовать нотацию группы, имени и версии вместе с допустимым репозиторием.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// File: build.gradle
apply plugin: 'groovy'
 
dependencies {
    compile localGroovy()
}
 
task runScript(type: JavaExec) {
    description 'Run Groovy script'
 
    // Set main property to name of Groovy script class.
    main = 'com.mrhaki.CurrentDate'
 
    // Set classpath for running the Groovy script.
    classpath = sourceSets.main.runtimeClasspath
 
    if (project.hasProperty('custom')) {
        // Pass command-line argument to script.
        args project.getProperty('custom')
    }
}
 
defaultTasks 'runScript'

Мы можем запустить скрипт со свойством проекта или без него, и мы видим изменения в выводе:

1
2
3
4
5
6
$ gradle -q
Current date and time: 29-09-2014
$ gradle -q -Pcustom=yyyyMMdd
Current date and time: 20140929
$ gradle -q -Pcustom=yyyy
Current date and time: 2014

Код написанный с Gradle 2.1.

Ссылка: Gradle Good: запуск Groovy Scripts как приложения от нашего партнера JCG Хьюберта Иккинка в блоге JDriven .