Grails:为外部groovy脚本提供一个库

Grails:为外部groovy脚本提供一个库,grails,groovy,classpath,Grails,Groovy,Classpath,我所拥有的: 使用apache commons io库的外部GroovyScript 和一个工作的grails应用程序 在现有的grails应用程序中,有不同的外部脚本(目前只有perl脚本)与grails异步执行(使用execute方法) 现在我得到了一个GroovyScript,我希望它的运行方式与我运行perlscript的方式相同 目前,脚本在lib文件夹中有commons io库。它很好用 因此,我的问题是:如何以一种平滑而简洁的方式为groovy脚本提供来自grails的common

我所拥有的: 使用apache commons io库的外部GroovyScript

和一个工作的grails应用程序

在现有的grails应用程序中,有不同的外部脚本(目前只有perl脚本)与grails异步执行(使用execute方法)

现在我得到了一个GroovyScript,我希望它的运行方式与我运行perlscript的方式相同

目前,脚本在lib文件夹中有commons io库。它很好用

因此,我的问题是:如何以一种平滑而简洁的方式为groovy脚本提供来自grails的commons io库?我是否必须提供通过execute方法执行的命令内的路径

e、 g:

如果我在当前的生产环境中将grails应用程序部署到tomcat,那么这将不会真正起作用,因为grails的lib位于不同的路径中

将脚本放入grails的src/groovy文件夹可能会起作用,但这不是我想要的方式。脚本需要是独立的

我真的被卡住了,因为我不太精通和groovy grails的技术细节

即使是如何实现这一目标的建议和想法也足够了


我希望您能理解这个问题,提前谢谢

这是一种使用和放置:

@Grab( 'commons-io:commons-io:2.1' )
在groovy脚本的顶部会有帮助吗

如果您将此作为战争运行,那么这可能会起作用:

String path = grailsApplication.parentContext
                               .getResource( 'WEB-INF/lib/commons-io-1.4.jar' )
                               .file
                               .absolutePath

在这种情况下,使用和放置:

@Grab( 'commons-io:commons-io:2.1' )
在groovy脚本的顶部会有帮助吗

如果您将此作为战争运行,那么这可能会起作用:

String path = grailsApplication.parentContext
                               .getResource( 'WEB-INF/lib/commons-io-1.4.jar' )
                               .file
                               .absolutePath

我对Grape了解不多,但根据Groovy用户指南,它只适用于maven依赖项,不幸的是,它不是maven项目。如果没有必要拥有maven项目,那么在我看来,这是多余的,因为grails在默认情况下已经有了commons io库,这就是我想要提供给script@Zobbl在我的回答中添加了另一个可能的解决方案。。。我只是尝试了一下Grape注释,它可以工作——我仍然认为它是多余的,因为groovy脚本不知道grails已经提供的库,但现在它可以工作了——这很重要;)我也会尝试一下你的第二个建议——这对我来说“感觉”更好;)我对Grape了解不多,但根据Groovy用户指南,它只适用于maven依赖项,不幸的是,它不是maven项目。如果没有必要拥有maven项目,那么在我看来,这是多余的,因为grails在默认情况下已经有了commons io库,这就是我想要提供给script@Zobbl在我的回答中添加了另一个可能的解决方案。。。我只是尝试了一下Grape注释,它可以工作——我仍然认为它是多余的,因为groovy脚本不知道grails已经提供的库,但现在它可以工作了——这很重要;)我也会尝试一下你的第二个建议——这对我来说“感觉”更好;)