2012-03-19 42 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