如何在<groovy> Ant任务中设置对FileSet的Ant引用?</groovy>

时间:2013-04-02 16:57:50

标签: ant groovy

我有类似的东西:

<groovy>
    import org.apache.tools.ant.types.FileSet
    import org.apache.tools.ant.types.selectors.FilenameSelector

    def aoeu = new FileSet()
    aoeu.setDir(new File('aoeu'))

    def snth = new new FilenameSelector()
    snth.setName('snth')

    aoeu.add(snth)

    project.references['aoeu'] = aoeu
</groovy>

可是:

<echo message="${toString:aoeu}"/>

发出NullPointerException

如何解决上述问题?

1 个答案:

答案 0 :(得分:1)

groovy task已预先配置了AntBuilder实例和Ant“项目”对象的绑定。它使groovy非常有吸引力,可以在构建中创建编程逻辑。

以下示例演示了如何在groovy脚本中创建文件集:

<project name="demo" default="process-text-files">

    <path id="build.path">
        <pathelement location="/path/to/jars/groovy-all-2.1.1.jar"/>
    </path>

    <target name="process-text-files">
        <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="build.path"/>
        <groovy>
            ant.fileset(id:"textfiles",dir:"src", includes:"**/*.txt")

            project.references.textfiles.each {
                println it
            }
        </groovy>
    </target>

</project>

以下示例演示了引用在脚本外部创建的普通文件集(我首选的方法):