0

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.

私は何が欠けていますか?

4

1 に答える 1

1

Groovy Ant Taskのドキュメントによると、groovy タスクのバインディングの 1 つは現在の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>
于 2008-10-22T15:03:49.637 に答える