2013-01-11 52 views
0

在我們的Ant構建文件有時我們稱Groovy腳本Groovy的Ant任務:Specifiying額外的常規文件

<groovy src="${groovy.script.dir}/DoIt.groovy"/> 

是否有指定一個或多個附加Groovy文件的方法嗎?我們的用例是我們在一個單獨的應用在幾個腳本中定義了一些常量。

我們是否必須將腳本編譯爲.class文件才能按預期使用它們,還是有更實用的方法來實現我們的目標?

回答

1

The docs<groovy>任務說,當你指定src屬性:

包含該文件的目錄添加到類路徑

所以其他常規類文件相同的文件夾應該是可以從您聲明的腳本訪問。

這不工作?

+0

感謝您的提示。它的工作原理,但是...包聲明處理奇怪。它適用於我1)我省略爲我的根腳本聲明一個包,並且2)引用其他類而不限定它們的包。完全合格的名稱似乎不起作用 - 在某些情況下。 – jens

+0

@jens也許嘗試設置'classpath'屬性? –

+0

無法想象這可能有所幫助。我們不使用編譯版本,但在我們的目錄中只有groovy腳本。 – jens

0

我在過去使用Groovy 1.8.1時遇到了同樣的問題。在文檔中,我找不到在同一個<groovy>任務中如何使用多個腳本文件(另請參閱ant <script>任務的文檔)。使用多個任務對我來說不起作用,因爲上下文在它們之間重置。

我還沒有升級到Groovy 2.x.y,因爲我沒有使用它。下面我用1.8.1說明一個可能的解決方法;也許它仍然有效。

<property name="home" location="/Users/coyote/mytest/ant/src"/> 
<property name="gscript1" location="${home}/my/own/pack/foo.groovy"/> 
<property name="gscript2" location="${home}/my/own/pack/bar.groovy"/> 

<groovy> 
    evaluate(new File(properties.'gscript1')); 
    evaluate(new File(properties.'gscript2')); 
</groovy> 

evaluate()它可以是一個字符串或一個腳本文件,在其上執行動態評價 - 根據所述API doc-使用當前綁定。我認爲這些是<groovy>任務的綁定。

我不確定我是否理解你的用例,但是用這個模型你可以先定義常量;硬編碼,作爲屬性+代碼,或者在groovy-script-file +評估中。