2013-04-02 46 views
1

我有類似:如何從<groovy/> Ant任務中將Ant引用設置爲FileSet?

<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

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> 

下面的示例演示引用外部創建的腳本一個正常的文件集(我做的首選方式):