2012-03-19 47 views
1

我有: 使用Apache的公地IO库的Grails:提供一个图书馆外部Groovy脚本

和工作Grails应用程序

在现有的Grails应用程序有一个外部GroovyScript不同的外部脚本(截至目前只有perl脚本),它们与grails(使用execute-Method)执行异步。

现在我得到了一个GroovyScript,我想以与运行PerlScripts相同的方式运行GroovyScript。

目前脚本在lib文件夹中有commons-io-library。它工作正常。

所以我的问题是:如何以平滑和整洁的方式提供来自grails的commons-io-library的groovy脚本?我必须提供通过执行法

例如执行的命令中的路径:

groovy -cp=path/to/grailshome/lib.jar scripfile.groovy 

这不是真的,如果我在目前的生产 - 部署grailsapplication到Tomcat工作环境,因为Grails的库存在不同的路径。

将脚本放到grails的src/groovy文件夹中可能会工作,但那不是我想要的方式。该脚本需要是独立的。

我真的陷入了困境,因为我不熟悉groovy grails的技术细节。

即使是建议和想法如何实现这一点就足够了。

我希望你明白的问题,在此先感谢

回答

1

这就是使用Grapes和推杆的情况:

@Grab('commons-io:commons-io:2.1') 

在你的Groovy脚本的顶部将帮助?

如果运行这个作为一场战争,那么这可能会奏效:

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

我不知道很多关于葡萄,但据Groovy的userguide它只是用于Maven的依赖和不幸的是它不是一个Maven的项目。 如果没有必要有一个Maven项目 - 在我看来 - 这是多余的,因为grails默认已经有commons-io-library - 这是我想提供给脚本的库 – Zobbl 2012-03-19 13:11:32

+0

@Zobbl增加了另一个可能的解决方案我的回答 – 2012-03-19 13:37:48

+0

嗯......我刚刚尝试过使用Grape-Annotation并且它工作正常 - 我仍然认为这是多余的,因为groovy脚本不知道通过grails可用的库,但是对于现在它的工作 - 这很重要;) 我会给你的第二个建议也尝试 - 它“感觉”对我更好;) – Zobbl 2012-03-19 13:40:24