2014-04-25 22 views
2

我對Grails Framework非常陌生,並且遇到一些奇怪的行爲。如果我使用Grails命令行工具這樣如果以字符串參數啓動,Grails會失敗

grails "-DghprbPullTitle=Title with spaces" clean 

Grails的失敗,此錯誤消息

| Script 'With' not found, did you mean: 
    1) IntegrateWith 
    2) Init 
    3) CreateUnitTest 

開始Grails的這種方式將工作

grails "-DghprbPullTitle=Title_without_spaces" clean 

好一個現在可以說「那只是避免空格「問題是,當我使用Jenkins + Grails插件+ Pull Request Builder插件時會發生這種情況。 Pull Request Builder插件使用空格生成一些這些參數。

任何想法,我可以如何使用帶有這種空白參數的grails。或者我可以告訴Pull Request Builder插件否生成這樣的參數。

Maven另一方面能夠處理這樣的參數。

由於提前, 馬爾科

+0

您能夠獲得ARGS如果'Grails的-DghprbPullTitle ='冠軍使用空格'clean'或'grails -DghprbPullTitle =「」「帶空格的標題」「」clean。沒有測試過,給它一個鏡頭。 – dmahapatro

+0

不幸的是,兩種變體導致相同的錯誤。儘管如此,我不能告訴拉請求生成器插件生成這樣的參數:( – marco

+0

我使用Grails的版本2.3.7 – marco

回答

1

我最終使用shell構建器,調用grailsw而不是Grails plugin

+0

jup,這個解決方法也適用於我 – marco

0

好了,所以它是在Grails的命令行工具的錯誤。它將在grails 2.4-RC1中修復。 請參閱Grails Issue Tracker

+0

它仍然存在於Grails 2.4.3中,看起來至少從2.2.1開始,可能更早。 – pavel

0

問題是,Grails Plugin + Pull Request Builder Plugin會將構建參數從PR Builder插件傳遞到grails命令。那些帶空格的參數並不是構建發生所必需的,它是Grails插件中的一種默認方式,可將這些參數傳遞給grails命令。

如果在Grails插件上的Grails Wrapper不適合你,使用Shell命令而不是Grails Plugin爲我工作:它避免了帶有空間的參數並使GitHub通知正常工作。 Grails安裝維護更糟糕,但至少它是一種替代方案。

0

我提交了PR https://github.com/jenkinsci/grails-plugin/pull/12來解決這個問題,通過抑制-D構建環境變量。

我正在使用Github pull request builder插件https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin來運行test-app,並且遇到了與其他問題相同的問題。我沒有使用ghprb插件傳入的任何變量,所以我添加了一個選項來抑制-D構建環境變量。選中此選項時,不會將任何-D變量傳遞給grails,從而允許使用grails插件構建按預期運行目標。

如果你想測試一下,看看它是否適合你,你可以從這裏下載http://jmoses.co/data/grails.hpi它並手動安裝How to install a plugin in Jenkins manually?