Выполните отличный сценарий из gradle

Что лучший способ состоит в том, чтобы создать gradle задачу, которая выполняет отличный сценарий? Я понимаю, что gradle файлы типа "build" отличны, таким образом, я думал бы, что будет возможно сделать что-то вроде этого:

task run << {
    Script app = new GroovyShell().parse(new File("examples/foo.groovy"))
    // or replace .parse() w/ a .evalulate()?
    app.run()
}

Я получаю все виды эксцентричных ошибок, когда я пробую это, если bar.groovy использует @Grab аннотации или даже выполнение простого импорта. Я хочу создать gradle задачу обработать это, так, чтобы я мог, надо надеяться, снова использовать определение пути к классу.

Было бы лучше переместить каталог в качестве примера в src каталог куда-нибудь? Что такое лучшая практика?

18
задан macattack 2 March 2010 в 02:18
поделиться

3 ответа

Я думаю, вам, вероятно, нужно запустить скрипт как новый процесс... например,

["groovy","examples/foo.groovy"].execute()

Я бы предположил, что Gradle выполняется не через вызов groovy, поэтому настройка, которая заставляет @Grab работать, не происходит. Возможно также, что версия Groovy, которую использует Gradle, не поддерживает @Grab.

1
ответ дан 30 November 2019 в 08:43
поделиться

Вы можете попробовать использовать GroovyScriptEngine вместо GroovyShell. Я уже использовал его ранее с аннотациями @Grab. Вам понадобится весь groovy в classpath, groovy-all.jar будет недостаточно. Я предполагаю, что Ivy не упакован в groovy-all.jar. Что-то вроде этого должно сработать:

Этот сценарий предполагает наличие сценария groovy в /tmp/HelloWorld.groovy

def pathToFolderOfScript = '/tmp'
def gse = new GroovyScriptEngine([pathToFolderOfScript] as String[])
gse.run('HelloWorld.groovy', new Binding())
7
ответ дан 30 November 2019 в 08:43
поделиться

Или вы могли бы сделать:

new GroovyShell().run(file('somePath'))
13
ответ дан 30 November 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: