创建一个运行groovy脚本的gradle任务的最佳方法是什么?我意识到gradle构建文件是常规的,所以我认为可以做这样的事情:
task run << {
Script app = new GroovyShell().parse(new File("examples/foo.groovy"))
// or replace .parse() w/ a .evalulate()?
app.run()
}
如果bar.groovy正在使用 @Grab
注释甚至进行简单的导入,那么当我尝试这个时,我会遇到各种各样的错误 . 我想创建一个gradle任务来处理这个问题,这样我就可以重用classpath定义了 .
将examples目录移动到某个地方的src目录会更好吗?什么是最佳做法?
4 回答
或者你可以这样做:
您可以尝试使用GroovyScriptEngine而不是GroovyShell . 我之前使用过@Grab注释 . 你将需要类路径上的所有groovy,groovy-all.jar是不够的 . 我猜Ivy没有打包在groovy-all.jar中 . 这样的事情应该是诀窍:
这个脚本假定在/tmp/HelloWorld.groovy上有一个groovy脚本
http://wayback.archive.org/web/20131006153845/http://docs.codehaus.org/display/GRADLE/Cookbook#Cookbook-runningthingsfromGradle
我想你可能需要将脚本作为一个新进程运行...例如,
我猜想Gradle的执行方式不是通过调用
groovy
,所以使@Grab工作的设置永远不会发生 . 它也可能是Gradle使用的Groovy版本不支持@Grab .