groovy inside ant: как получить доступ к рефидам из grooy, которые определены тегами ant

StackOverflow https://stackoverflow.com/questions/225063

  •  03-07-2019
  •  | 
  •  

Вопрос

Я использую отличный фрагмент кода в файле сборки 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top