groovy inside ant: как получить доступ к рефидам из grooy, которые определены тегами ant
Вопрос
Я использую отличный фрагмент кода в файле сборки ant. Внутри 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>
Не связан с StackOverflow