2013-01-11 30 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 +评估中。