在我們的Ant構建文件有時我們稱Groovy腳本Groovy的Ant任務:Specifiying額外的常規文件
<groovy src="${groovy.script.dir}/DoIt.groovy"/>
是否有指定一個或多個附加Groovy文件的方法嗎?我們的用例是我們在一個單獨的應用在幾個腳本中定義了一些常量。
我們是否必須將腳本編譯爲.class文件才能按預期使用它們,還是有更實用的方法來實現我們的目標?
在我們的Ant構建文件有時我們稱Groovy腳本Groovy的Ant任務:Specifiying額外的常規文件
<groovy src="${groovy.script.dir}/DoIt.groovy"/>
是否有指定一個或多個附加Groovy文件的方法嗎?我們的用例是我們在一個單獨的應用在幾個腳本中定義了一些常量。
我們是否必須將腳本編譯爲.class文件才能按預期使用它們,還是有更實用的方法來實現我們的目標?
我在過去使用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 +評估中。
感謝您的提示。它的工作原理,但是...包聲明處理奇怪。它適用於我1)我省略爲我的根腳本聲明一個包,並且2)引用其他類而不限定它們的包。完全合格的名稱似乎不起作用 - 在某些情況下。 – jens
@jens也許嘗試設置'classpath'屬性? –
無法想象這可能有所幫助。我們不使用編譯版本,但在我們的目錄中只有groovy腳本。 – jens