在我们的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