我在ant构建文件中使用了一个groovy代码段。在groovy代码中,我试图引用一个已经在groovy部分之外定义的文件集,如下所示:

<target name="listSourceFiles" >
    <fileset id="myfileset" dir="${my.dir}">
         <patternset refid="mypatterns"/>
    </fileset>
    <groovy>
        def ant = new AntBuilder()

        scanner = ant.fileScanner {
            fileset(refid:"myfileset")
        }

    ...
    </groovy>
</target>

当我执行此操作时,我收到以下错误消息:

Buildfile: build.xml

listSourceFiles:   
   [groovy]

BUILD FAILED
d:\workspace\Project\ant\build.xml:13:
Reference myfileset not found.

我错过了什么?

有帮助吗?

解决方案

根据 Groovy Ant任务文档,groovy任务的 绑定 之一是当前的 AntBuilder ant

所以修改你的脚本以删除冲突的'ant'def我让它运行没有错误:

<project name="groovy-build" default="listSourceFiles">

<taskdef name="groovy"
         classname="org.codehaus.groovy.ant.Groovy"/>

<patternset id="mypatterns">
  <include name="../*.groovy"/>
</patternset>
<target name="listSourceFiles" >
    <fileset id="myfileset" dir="${my.dir}">
         <patternset refid="mypatterns"/>
    </fileset>
    <groovy>
        scanner = ant.fileScanner {
            fileset(refid:"myfileset")
        }
    </groovy>
</target>
</project>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top