В ант, посредством тега
script, можно выполнять JavaScript код.
Для таких скриптов доступна некая базовая объектная модель. В частности, доступен глобальный объект this, в котором хранятся все переменные, определённые в текущем коде скрипта. Так же в нем доступны объекты задач из текущего ant-файла, для которых установлен атрибут id.
Так же можно получить объект проекта через свойство project или имя проекта (значение атрибута name тега project).
Важный момент: для каждого тега script запускается новый экземпляр интерпретатора, поэтому состояния глобальных объектов и встроенных конструкторов не сохраняется.
Для обращения к конкретному классу, он сначала должен быть импортирован, например:
importClass(java.io.File);
К примеру, класс объекта проекта можно получить так:
importClass(org.apache.tools.ant.Project);
Теперь в глобальной области доступен класс Project.
Свойства экземпляра этого класса описаны
здесь.
Либо импорт пакета:
importPackage(java.io);
Для каждой задачи (тега) ant определён свой класс, который наследует от более абстрактных классов, что можно посмотреть в
мануале. Кстати, последняя версия ant - 1.8.2, а документация к API существует только для 1.7.1. Но ни что не мешает заглянуть в
исходники, особенно при возникновении трудностей.
Так как это не обычные JS-объекты, а самые настоящие классы и их экземпляры, то и поведение у них соответствующее. Самое основное то, что нельзя присвоить экземпляру класса новое свойство. Так же нельзя вызвать метод с другими типами аргументов или их с отсутствием, так как этот набор жестко определён. Вообще, это уже чистая Java.