Я хочу выполнить команду из файла сборки Ant для каждого файла в каталоге.
Я ищу платформо-независимое решение.
Как мне это сделать?
Конечно, я мог бы написать сценарий на каком-нибудь языке сценариев, но это добавило бы дополнительных зависимостей в проект.
file-io
ant
build-process
build-automation
ivan_ivanovich_ivanoff
источник
источник
Используйте задачу <apply> .
Он выполняет команду один раз для каждого файла. Укажите файлы с помощью наборов файлов или любого другого ресурса. <apply> встроен; не требуется дополнительных зависимостей; реализация нестандартной задачи не требуется.
Также можно запустить команду только один раз, добавив все файлы в качестве аргументов за один раз. Используйте атрибут parallel для переключения поведения.
Извините за опоздание на год.
источник
Подход без ant-contrib предложен Тассило Хорном ( исходная цель здесь )
В основном, поскольку нет расширения <java> (пока?) Таким же образом, как <apply> расширяет <exec> , он предлагает использовать <apply> (который, конечно, также может запускать Java-программу в командной строке)
Вот несколько примеров:
источник
Вот способ сделать это с помощью javascript и задачи ant scriptdef, вам не нужен ant-contrib для работы этого кода, поскольку scriptdef - это основная задача ant.
источник
project
в приведенном выше примере имеется ссылка на переменную , но без предварительного определения. Было бы хорошо, если бы это было представлено или разъяснено. EDIT: n / m, обнаружено, чтоproject
это предопределенная переменная для доступа к текущему проекту. Я подозревал это, но не был уверен.ant-contrib - зло; написать специальную задачу для муравьев.
ant-contrib является злом, потому что он пытается преобразовать ant из декларативного стиля в императивный стиль. Но xml - это дерьмовый язык программирования.
Напротив, настраиваемая задача ant позволяет вам писать на реальном языке (Java) с реальной IDE, где вы можете писать модульные тесты, чтобы убедиться, что у вас есть желаемое поведение, а затем сделать чистое объявление в сценарии сборки о поведение, которое вы хотите.
Эта напыщенная речь имеет значение только в том случае, если вы заботитесь о написании поддерживаемых сценариев ant. Если вас не заботит ремонтопригодность, делайте все, что работает. :)
JTF
источник
Я знаю, что этот пост действительно старый, но теперь, когда прошло некоторое время и прошли версии муравьев, есть способ сделать это с помощью основных функций муравьев, и я подумал, что должен поделиться им.
Это делается с помощью рекурсивного макроопределения, которое вызывает вложенные задачи (могут быть вызваны даже другие макросы). Единственное соглашение - использовать фиксированное имя переменной (здесь элемент).
Ключевые особенности, необходимые там, где:
Мне не удалось сделать разделитель variabel, но это не может быть серьезным недостатком.
источник
Вы можете использовать задачу ant-contrib «for» для итерации по списку файлов, разделенных любым разделителем, разделителем по умолчанию является «,».
Ниже приведен пример файла, который показывает это:
источник
Сделайте то, что предложил blak3r, и определите свой целевой путь к классам следующим образом
где lib - это место, где вы храните свою банку
источник