I was pondering about this earlier today. Wondering how I would invoke an Ant task that used nested text data using Groovy Ant. Why? Because I looked at the Ant script task while browsing Ant docs and said, “Hmm. that’d be neat to embed a script in a GroovyAnt build… but how do I pass text?” Well it just dawned on me that the random errors I’d been getting with Groovy’s AntBuilder exposed the answer. Occasionally I’ll forget to prefix a task attribute with an attribute name like:
ant.available(property:'menu.icon.found', '/menu.png', classpath:'target/MapQuestCoolStuff.jar')
And I’ll get an error saying:
ERR: SCRIPT FAILED: The type doesn't support nested text data ("/menu.png").
ERR: The type doesn't support nested text data ("/menu.png").
It’s telling me that the second parameter is being passed to AntBuilder as text instead of a task attribute.

ahh i got this error replacing one of the colons with an equals
ant.mail(from=”me”,…)
instead of
ant.mail(from:’me’,…)
By: Jeremy Leipzig on September 22, 2008
at 1:09 pm
Yeah, it’s amazing how you can learn new features of a tool from a simple typ’o or finger fumble. Incidentally, that’s how I learned many of my IntelliJ Idea hot keys.
By: Cliff on September 22, 2008
at 2:13 pm