Что такое ant java
Перейти к содержимому

Что такое ant java

  • автор:

Учебное пособие по Apache ANT: что такое инструмент сборки Ant? Пример

Инструмент сборки — это инструмент программирования, который используется для создания новой версии программы. Он автоматизирует создание исполняемого приложения из любого исходного кода.

Что такое Apache Ant?

Апачский муравей — это инструмент командной строки на основе Java для создания приложений Java с полной переносимостью чистого кода Java. Он позволяет разработчикам применять гибкие принципы и разработку через тестирование для автоматизации повторяющихся задач разработки, таких как создание документации и т. д. Ant — это аббревиатура от «Другой аккуратный инструмент».

Для чего используется инструмент Apache Ant Build?

Вот важные плюсы/преимущества использования инструмента Build:

  • Инструмент сборки позволяет автоматизировать определенные повторяющиеся задачи, такие как компиляция исходного кода, запуск тестов программного обеспечения и создание файлов для развертывания программного обеспечения.
  • Инструменты сборки в основном работают без графического пользовательского интерфейса.
  • Помогает вам преобразовать исходный код в исполняемый код.
  • Предлагает возможность перекомпилировать файл только в случае необходимости.
  • Позволяет компилировать большое количество файлов за относительно короткое время.
  • Два широко популярных инструмента сборки, используемые разработчиками Java, — это Apache Maven и Ant.

Апачский муравей

История Apache Ant

В этом руководстве по Apache ANT мы узнаем об истории Apache Ant Build Tool.

Вот важные исторические вехи, полученные с помощью инструмента Apache Ant:

  • Джеймс Дункан Дэвидсон создал Муравей в июле 2000 года.
  • Первоначально он использовался для сборки Tomcat и был встроенным продуктом дистрибутива Tomcat.
  • В мае 2014 года была выпущена версия Apache Ant 1.9.4 со множеством расширенных функций.
  • Последняя версия — 1.10.3, выпущенная в марте 2018 года.

Особенности Apache Ant

Вот основные функции Apache Ant:

  • Это проект с открытым исходным кодом.
  • Позволяет запускать сборки как в системах Windows, так и в UNIX/Linux.
  • Вам нужно только JVM поскольку он работает везде, где доступна JVM.
  • Предлагает широкий спектр предопределенных задач.
  • Помогает копировать из одного места в другое.
  • Предлагает интерфейс для разработки пользовательских задач.
  • Позволяет вызывать из командной строки, которая может легко интегрироваться с бесплатные и коммерческие IDE.
  • Позволяет развертывать двоичные файлы на тестовом сервере.
  • Предлагает расширяемую архитектуру
  • Предлагает обратную совместимость

Как установить и настроить Apache Ant в Windows

Теперь в этом руководстве по Apache ANT мы изучим процесс установки Apache Ant в Windows.

Мы предполагаем, что вы уже скачали и установили Java Development Kit (JDK) на свой компьютер. Убедитесь, что для переменной среды JAVA_HOME установлена ​​папка, в которой установлен ваш JDK. Выполните следующие шаги для установки Ant:

Шаг 1) Загрузите двоичные файлы.
Скачайте бинарники с https://ant.apache.org/bindownload.cgi

Установите и настройте Apache Ant в Windows

Шаг 2) Распаковать файлы.
Разархивируйте этот zip-файл в удобное место c:\folder. Использование Winzip, WinRAR, 7-zip или аналогичных инструментов.

Установите и настройте Apache Ant в Windows

Шаг 3) Создайте переменную среды.
Создайте переменную среды для «ANT_HOME» и присвойте значение переменной местоположению папки Ant.

  1. Щелкните правой кнопкой мыши значок «Этот компьютер».
  2. Нажмите Свойства

Установите и настройте Apache Ant в Windows

Шаг 4) Зайдите в настройки системы.
Нажмите «Дополнительные настройки системы».

Установите и настройте Apache Ant в Windows

Шаг 5) В свойствах системы
Нажмите на вкладку «Дополнительно».

Установите и настройте Apache Ant в Windows

Шаг 6) Узнайте переменные среды.
Нажмите кнопку «Переменные среды…».

Установите и настройте Apache Ant в Windows

Шаг 7) Создать нового пользователя.
Нажмите «Новый», чтобы создать новую пользовательскую переменную.

Установите и настройте Apache Ant в Windows

Шаг 8) Введите пользователя details.
Введите новую пользовательскую переменную details

  1. Введите имя переменной как ANT_HOME.
  2. Введите значение переменной как C:\apache-ant-1.9.14-bin\apache-ant-1.9.14\bin.
  3. Нажмите кнопку «ОК».

Установите и настройте Apache Ant в Windows

Шаг 9) Пользователь создан.
Нажмите кнопку «ОК».

Установите и настройте Apache Ant в Windows

Шаг 10) Закройте экран.
Нажмите «ОК», чтобы закрыть экран.

Установите и настройте Apache Ant в Windows

Вы можете проверить успешную установку Ant, введя команду «ant -version» в командной строке.

Вы увидите следующееwing экран:

Установите и настройте Apache Ant в Windows

Пример Apache ANT

   Hello, World   

Давайте сохраним это как «buildl.xml».

  • Перейдите в CMD и перейдите в каталог, в который вы поместили файл simplebuild.xml.
  • Теперь напишите ant-файл buildl.xml Hello_World_Target. Это должно показать нам Hello World.

Структура проекта АНТ

Структура проекта АНТ

Структура проекта АНТ

Каждая сборка будет содержать три узла:

  • Проекты
  • цель
  • Сложность задачи

Проект:

Все внутри файла сборки в Apache ANT находится в проекте.

  • Имя Имя проекта.
  • Базовый каталог: это каталог, из которого будут рассчитываться все пути. Это можно переопределить, используя свойство «basedir».
  • По умолчанию: помогает определить цель по умолчанию для этого проекта. Если цель не указана, будет выполнено значение «по умолчанию».

Цель:

Цель — это набор задач, который определен для достижения определенного состояния процесса сборки.

  • Имя: Имя цели (обязательно)
  • Описание: Описание цели
  • Зависит: от какой цели зависит эта текущая цель.
  • Если: выполняет цель, только если для целевого свойства установлено значение.
  • Если только: выполняется цель, если значение свойства не установлено.

Задачи:

Это фрагмент кода, который можно выполнить. Задача имеет несколько аргументов или атрибутов.

Общий шаблон метода для записи задачи:

Вы можете использовать сборку в задаче или создать собственную задачу.

Лучшие практики использования Apache Ant

Вот некоторые рекомендации по использованию Apache Ant.

  • Вам следует автоматизировать нумерацию сборок с помощью файлов свойств.
  • Реализация настраиваемой сборки с помощью файлов свойств по умолчанию и файлов свойств сборки. Эти файлы позволяют вам хранить свойства, определяющие данные для вашего процесса сборки, такие как версия компилятора, настройки оптимизации и т. д.
  • Вы можете повторно использовать готовые библиотеки, используя файлы свойств библиотеки.

Преимущества использования Apache Ant

Вот плюсы/преимущества использования Apache Ant:

  • Это Муравей. Он не зависит от платформы, поэтому помогает управлять платформо-ориентированными свойствами, такими как разделители файлов.
  • Ant позволяет выполнять задачи, специфичные для платформы, например изменять время изменения файла с помощью команды «touch».
  • Сценарии Ant написаны с использованием простого XML, поэтому, если вы уже знакомы с XML, вы сможете быстро изучить Ant.
  • Ant предлагает большой список предопределенных задач.
  • Он предлагает интерфейс для разработки индивидуальных задач.
  • Вы можете легко вызвать ant из командной строки. Он позволяет интегрироваться с бесплатными и коммерческими IDE.
  • Вам нужна JVM: она работает везде, где доступна JVM.
  • Apache Ant — это библиотека с открытым исходным кодом, которая позволяет пользователям получать доступ к исходному коду и воспроизводить его.
  • Apache Ant — это кросс-платформенный инструмент, который позволяет доступным способом обрабатывать пути к классам Java и структуру каталогов файлов.
  • Apache Ant легко расширяется с помощью Java и другие языки программирования.
  • Apache Ant предлагает встроенную поддержку разработки J2EE, такую ​​как компиляция и упаковка EJB.
  • Вы можете использовать его для небольшого личного проекта, который также можно использовать в большом программном проекте или на их веб-сайте.

Итоги

  • Инструмент сборки — это инструмент программирования, который используется для создания новой версии программы.
  • Ant (аббревиатура от Another Neat Tool) — это инструмент сборки на основе XML. Это широко используемый инструмент сборки на основе Java с полной переносимостью чистого кода Java.
  • Apache ANT помогает конвертировать исходный код в исполняемый код.
  • Джеймс Дункан Дэвидсон создал муравья в июле 2000 года.
  • Апачский муравей предлагает широкий спектр предопределенных задач.
  • Каждая сборка будет содержать три узла: 1) Проект 2) Цель 3) Задача.
  • Все внутри файла сборки в Apache ANT находится в проекте.
  • Цель — это набор задач, который определен для достижения определенного состояния процесса сборки.
  • Задача — это фрагмент кода, который может быть выполнен. Задача имеет несколько аргументов или атрибутов.
  • Лучше всего автоматизировать нумерацию сборок с помощью файлов свойств в Apache ANT.
  • Самым большим преимуществом Apache ANT является то, что он не зависит от платформы, поэтому он помогает вам управлять платформо-ориентированными свойствами, такими как разделители файлов.
  • Программа для печати простых чисел от 1 до 100 на Java
  • Программа чисел-палиндромов на Java с использованием цикла while и for
  • Алгоритм пузырьковой сортировки на Java: программа и пример сортировки массива
  • Алгоритм сортировки вставками в Java с примером программы
  • Сортировка выбором в программе Java с примером
  • Абстрактный класс и интерфейс в Java – разница между ними
  • 100+ вопросов и ответов на собеседовании по Java (2024 г.)
  • Учебное пособие по JAVA в формате PDF: основы для начинающих (загрузить сейчас)

Автоматизация процесса сборки java-проектов с помощью Ant.

Из данной статьи Вы узнаете, как с помощью Apache Ant framework автоматически собирать Java проект, запускать тесты и многое другое. Ant — это framework, с помощью которого можно избавиться от стандартного набора команд:
# javac .
# java .
которые приходится выполнять после изменений в коде. Для этого Вам нужно будет 1 раз настроить xml файл для проекта с соответствующими заданиями. А далее запускать его либо вручную, либо через crontab либо через CI(Continuous Integretion) систему.

Установка и настройка Ant

  1. Скачиваем последнюю версию Ant.
  2. Распаковываем архив в какую-нибудь папку, к примеру, /home/ant/apache-ant-1.8.2
  3. Прописываем переменные окружения:
    export ANT_HOME=/home/ant/apache-ant-1.8.2
    export PATH=$PATH:$ANT_HOME/bin
    export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0
  4. Перечитываем настройки окружения:
    # source /root/.bash_profile

Основы Ant

  • build.xml — Файл сборки ассоциируется с проектом.На 1 проект создается 1 файл xml — файл сборки. В принципе его можно называть, как будет угодно, но по-умолчанию это build.xml. Если назовете свой файл по-другому, к примеру, mybuild.xml, то для запуска задач из этого файла нужно будет всегда указывать его название:
    # ant -f mybuild.xml
    Если же Вы назовете свой файл build.xml, то параметр -f имя_файла можно опускать, и соответственно вызов файла будет следующим:
    # ant
  • target — задание (цель). В файле build.xml должно быть хотя бы одно задание. Задания могут зависеть от других заданий. К примеру, собрать jar файл можно только после компиляции. Задания можно запускать по-отдельности или сразу несколько.
  • property — позволяют задать переменные сборки. Такие как папки с исходными кодами, /tmp и т.д. К свойствам можно обращаться при помощи $ .
  Performing of the tests.  

Таким образом мы создали задание «test» с одной командой «echo».
При запуске Ant созданного Вами задания приложение должно выдать что-то вроде:

# ant -f build.xml test Buildfile: /home/masha/java/EnglishTesting/build.xml test: [echo] Performing of the tests. BUILD SUCCESSFUL Total time: 1 second
  • test — Запуск junit тестов.
  • clean — Очистка (удаление) всех временных папок и файлов (к примеру, папка сборки).
  • deploy — Установка(копирование) jar файлов в нужную директорию, где выполняемые файлы, можно например запускать и использовать для интеграционного тестирования.
  • compile — Компиляция проекта.
  • javadoc — Генерация документации к разработанным классам.
  • all — выполнение всех действий последовательно, например, clean затем compile затем javadoc затем jar и deploy.
  • jar — генерация java архива всего проекта.

Реализуем компиляцию проекта

Рассмотрим простое задание — скомпилируем наш проект в нужной директории. Для этого создадим следующий build.xml файл:

   /class/java"/> "/> "/> Compilation .  "/>  

Как Вы заметили мы задали набор property , где указали директории исходников, релизов. Атрибут location (value) — хранит значение переменной. Если Вы создаете переменную для хранения имени директории, то нужно указывать location, если нужно использовать переменную в качестве имени проекта, то используйте value.
Далее мы выполняем задание make.dirs. В нем мы вызываем комады для создания нужных нам директорий. И только после этого мы выполняем задание compile, так как в нем есть атрибут depends. Атрибут depends позволяет нам управлять заданиями.
Команда javac позволяет собрать проект. Атрибут destdir указывает, где нужно расположить откомпилированные классы. Атрибут src path=»$» указывает где взять исходники. includeantruntime — атрибут отвечающий за подключение библиотек лежащих в lib самого Ant. Лучше всегда указывать false, чтобы выполнение заданий не зависило от окружения — от машины на которой запускается build.xml.
Запустим build.xml файл:

# ant compile.java Buildfile: /home/masha/java/EnglishTesting/build.xml make.dirs: [mkdir] Created dir: /home/masha/java/EnglishTesting/build [mkdir] Created dir: /home/masha/java/EnglishTesting/build/class/java compile.java: [echo] Compiling classes. [javac] Compiling 4 source files to /home/masha/java/EnglishTesting/build/class/java BUILD SUCCESSFUL Total time: 1 second

Заметьте, если повторно запустить на выполнение эту же команду, то будет выдано следующее:

# ant compile.java Buildfile: /home/masha/java/EnglishTesting/build.xml make.dirs: compile.java: [echo] Compiling classes. BUILD SUCCESSFUL Total time: 0 seconds

Это значит, что если папки уже существуют, то они повторно не пересоздаются. А также если в коде не было изменений, то он также повторно не компилируется.

Тестирование проекта

Для запуска тестов используется тег junit. Он имеет множество удобных настроек. Рассмотрим запуск простого теста на следующем примере. Для этого допишем в наш предыдущий build.xml файл новую задачу test:

 Compiling tests.  "/> /junit-4.5.jar"/> "/>       /junit-4.5.jar"/> "/> "/>   

Свойства $ , $ зададим заранее. Теперь запустим наш файл сборки:

# ant test Buildfile: /home/masha/java/EnglishTesting/build.xml make.dirs: [mkdir] Created dir: /home/masha/java/EnglishTesting/build [mkdir] Created dir: /home/masha/java/EnglishTesting/build/class/java [mkdir] Created dir: /home/masha/java/EnglishTesting/build/class/test [mkdir] Created dir: /home/masha/java/EnglishTesting/build/jar compile: [echo] Compiling classes. [javac] Compiling 4 source files to /home/masha/java/EnglishTesting/build/class/java compile.test: [echo] Compiling tests. [javac] Compiling 2 source files to /home/masha/java/EnglishTesting/build/class/test test: [junit] Running testing.EnglishTestingTest [junit] Testsuite: testing.EnglishTestingTest [junit] Tests run: 10, Failures: 0, Errors: 0, Time elapsed: 0.061 sec [junit] Tests run: 10, Failures: 0, Errors: 0, Time elapsed: 0.061 sec [junit] [junit] Testcase: testCalcPercentNullQuestions took 0.007 sec [junit] Testcase: testCalcPercent took 0.001 sec [junit] Testcase: testCalcSkillIncrement took 0.001 sec [junit] Testcase: testCalcSkillIncrementErrors took 0 sec [junit] Testcase: testGetResultsExcelent took 0.001 sec [junit] Testcase: testGetResultsGood took 0 sec [junit] Testcase: testGetEnglishWord took 0 sec [junit] Testcase: testCheckAnswer took 0.001 sec [junit] Testcase: testCheckIncorrectAnswer took 0 sec [junit] Testcase: testGenerateAnswerForImproperWord took 0 sec BUILD SUCCESSFUL Total time: 3 seconds
  • printsummary=»yes» — в конце прогона будет выдана сумма пройденных и не пройденных тестов
  • haltonerror=»yes» — остановить процесс сборки при возникновении ошибки ( unexpected exception)
  • haltonfailure yes» — запуск на отдельной JVM
  /junit-4.5.jar"/> "/>  

2) либо

  /junit-4.5.jar" /> "/>     

Первый способ удобен, когда у Вас маленький проект и Вам нужно быстро набросать сборочный файл. Но лучше пользоваться вторым способом. Второй способ позволяет сэкономить, если придется указывать classpath и в других задачах java или javac.
Элемент formatter type отвечает за формат результатов прогона тестов. Значение type может быть brief — краткий текстовый, plain — подробный текстовый и xml. Атрибут usefile позволяет выводить результаты прогона тестов на консоль или в файл.

Генерация отчета html о прохождении тестов

Как говорилось выше результаты задания junit могут выводиться либо на консоль либо в файл. Для генерации html отчета необходимо создать задания следующего вида:

   "/> "/> "/> "/>   /html"/>    /html"/> 

Первое, что мы делаем это сохраняем результаты проведенных тестов в XML. Далее мы используем элемент junitreport, он преобразует полученный xml в html в указанную в атрибуте todir директорию. Элемент fileset позволяет junitreport указать, какие именно xml файлы использовать для генерации html. Результаты в броузере можно посмотреть открыв index.html:

Сборка jar архива

Каждый JAR файл содержит в себе файл MANIFEST.MF, который лежит в директории META-INF. MANIFEST.MF это текстовый файл, который содержит информацию о JAR архиве, например версию, конфигурацию, запускаемый класс. Сгенерируем JAR файл для нашего приложения с помощью следующего задания:

   /mysql-connector-java-5.1.14-bin.jar"/>   

В нашем случае будем генерировать JAR файл только после корректного прохождения unit-тестирования. В MANIFEST.MF зададим атрибуты:
«Main-Class» — указываем класс, который является входной точкой вашего приложения. Класс должен содержать метод main() .
«Class-Path» — перечисляем все библиотеки, от которых зависит наше приложение.
«Created-By» — указываем, кем было создано приложение.
Теперь можно запустить наше приложение так:
java -jar EnglishTesting.jar

Запуск проекта

Если для проверки работоспособности Вашего приложения необходимо осуществляеть его запуск, то можно воспользоваться следующим заданием:

 Running application . . . /EnglishTesting.jar" fork="true"/> 

Заметьте, если Вы используете консольное приложение, то оно запускается в отдельном процессе, а не в том в котором запущен Ant. Поэтому вводить данные через консоль при этом не удастся.

Генерация документации

Когда проект готов Вы возможно захотите сформировать для него документацию — javadoc. Если Вы используете соответствующие комментарии к классам, то сформировать документацию не сложно. Вам необходимо создать задание :

 Generation javadoc . . .    

После запуска задания Вы получите готовую javadoc документацию :

Полный пример build.xml можно взять здесь. Более подробно об инструменте Apache Ant можно почитать здесь.

Welcome

Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applications. Ant supplies a number of built-in tasks allowing to compile, assemble, test and run Java applications. Ant can also be used effectively to build non Java applications, for instance C or C++ applications. More generally, Ant can be used to pilot any type of process which can be described in terms of targets and tasks.

Ant is written in Java. Users of Ant can develop their own «antlibs» containing Ant tasks and types, and are offered a large number of ready-made commercial or open-source «antlibs».

Ant is extremely flexible and does not impose coding conventions or directory layouts to the Java projects which adopt it as a build tool.

Software development projects looking for a solution combining build tool and dependency management can use Ant in combination with Apache Ivy.

The Apache Ant project is part of the Apache Software Foundation.

Apache IvyDE retired

Nov 26, 2023 — IvyDE retired

The Ant PMC voted to archive the IvyDE subproject. This means that all its resources are removed or made read only and no further development will be done.
It also means that, if a community grows, the subproject could be reactivated.

Apache Ant 1.10.14

August 20, 2023 — Apache Ant 1.10.14 Released

Apache Ant 1.10.14 is now available for download from https://ant.apache.org/bindownload.cgi.

The Apache Ant team currently maintains two lines of development. The 1.9.x releases require Java5 at runtime and 1.10.x requires Java8 at runtime. Both lines are based off of Ant 1.9.7 and the 1.9.x releases are mostly bug fix releases while additional new features are developed for 1.10.x. We recommend using 1.10.x unless you are required to use versions of Java prior to Java8 during the build process.

Ant 1.10.14 contains an important change wherein it no longer uses or sets Java SecurityManager when running on Java versions 18 and higher. This should allow projects to build on Java 18 and higher versions.

Apache Ivy 2.5.2

August 20, 2023 — Apache Ivy 2.5.2 Released

Apache Ivy 2.5.2 is now available for download as source or binary from https://ant.apache.org/ivy/download.cgi.

Ivy 2.5.2 is mainly a bug fix release that also fixes a security vulnerability, see security reports for details.

Apache AntUnit 1.4.1

Jul 7, 2021 — Apache AntUnit 1.4.1 Released

Apache AntUnit 1.4.1 is now available for download as binary or source release.

This release fixes the antlib.xml descriptor so that AntUnit can now be used with a user-defined URI rather than having AntUnit’s preferred URI hardcoded..

EasyAnt retired

Dec 13, 2016 — EasyAnt retired

The Ant PMC voted to archive the EasyAnt subproject and all its modules. This means that all its resources are removed or made read only and no further development will be done.
It also means that, if a community grows, the subproject could reactivated.

Apache IvyDE 2.2.0

November 22, 2013 — Apache IvyDE 2.2.0 Released

The Apache IvyDE project is pleased to announce its 2.2.0 release.

The Apache IvyDE Eclipse plugin integrates Apache Ivy’s dependency management into Eclipse. It lets you manage your dependencies declared in an ivy.xml in your Java Eclipse projects, or any other kind of project which needs dependency management. Apache IvyDE will contribute to the classpath of your Java project or you can make it retrieve your dependencies directly into your project. Last but not least Apache IvyDE offer editors of ivy.xml and ivysettings.xml files with completion. Get some preview here: https://ant.apache.org/ivy/ivyde/screenshots.html

Major changes in this release
  • The API of IvyDE has been stabilized so that third party plugins can rely on it,
  • while still not complete, and still not advertised as stable in Ivy, support of OSGi has been added,
  • javadoc and source attachement can be edited now one by one,
  • improved stability of the resolve process,
  • improved logging for easier debugging.
Compatibility
  • This release is expected to work with every version of Ivy 2.1 or superior. The OSGi features require Ivy 2.3.0 or superior though.

This release is considered as stable. The beta of 2.2.0 has been out for a (too) long time.

Documentation

You can view the documentation for the current release online

Comprehensive documentation is included in the source and binary distributions.

Get Involved

  • Get Involved
  • Join Mailing Lists
  • Search the Dev Mailing List
  • Search the User Mailing List

Copyright © 1999-2022 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.

Apache Ant, Apache Ivy, Apache EasyAnt, Ant, Ivy, EasyAnt, Apache, the Apache feather logo, and the Apache Ant project logos are trademarks of The Apache Software Foundation.

4 марта 2009

Когда речь идет об использовании интегрированной среды разработки (IDE), часто приходится сталкиваться с мнением о том, что ее функционал слишком избыточен для решения повседневных задач. Доля правды в этом есть: появляются новые сущности, незнакомые механизмы, много настроек, о которых раньше не приходилось задумываться. Однако не стоит забывать, что работа в IDE — совершенно новый уровень разработки и многие привычные задачи в ней решаются по-другому. Прелесть интегрированной среды в том, что у разработчика есть возможность собрать под одной крышей (то есть в одной программе) много разных инструментов, которые будут не только решать разные задачи, но и тесно взаимодействовать друг с другом. Таким образом, перед разработчиком откроются абсолютно новые способы работы над проектом. В прошлых статьях я рассказывал об инструментах для работы с исходным кодом, сейчас начнем знакомиться с приемами работы над проектом в целом. И начнем с автоматизации рутинных задач с помощью Ant. Apache Ant известен любому Java-программисту: это популярный инструмент сборки ПО (build tool), полностью написанный на Java. Его поддерживают все IDE: NetBeans, IntelliJ IDEA, Eclipse. Сценарий сборки Ant представляет собой простой XML-файл. Несмотря на всю свою Java-направленность, и обычные веб-разработчики пользуются этим инструментом для решения своих задач.

Hello world!

Давайте начнем изучение Ant с классического примера: текст Hello world! выведем в консоль. Для начала нам нужно убедиться, что файл build.xml (так обычно называют сценарии сборки) привязан к редактору Ant в Eclipse. Идем в Preferences → General → Editor → File Associations и ищем там файл build.xml, привязанный к редактору Ant Editor. Если такой записи нет, добавьте ее: сначала нажмите Add напротив File types и введите туда build.xml, затем выделите только что добавленную запись и нажмите Add напротив Associated editors и в списке выберите Ant Editor. Выделите Ant Editor и нажмите кнопку Default.

  1. Создадим новый проект и назовем его, например, ant-test.
  2. В этом проекте создадим новый файл с именем build.xml. Файл должен сразу же открыться в Ant Editor.
  3. Запишем туда вот такой сценарий:
01 
02
03
04
05
06
   Hello world!   

  • В только что открывшемся виде нажимаем на иконку , находим файл build.xml и дважды кликаем по нему. Теперь в этом виде отображается наш сценарий, который очень удобно тестировать.
  • Раскроем список my_test_project и сделаем двойной клик по hello-world. В консоли должна появится надпись Hello world!
  • Рассмотрим подробнее структуру сценария. Родительским элементом является с атрибутом name — это название сценария построения.

    Внутри тега находится тег , внутри которого — . Тут мы подходим к двум важным понятиям Ant, которые поначалу могут немного запутать: это цели (targets) и задания (tasks). В данном случае мы выполнили цель hello-world (обязательный атрибут name у тега ) с помощью задания . Чтобы легче было запомнить, предлагаю пользоваться следующими правилами: цель указывает, что именно нужно сделать, а задания — с помощью чего достигается цель.

    Чтобы лучше освоиться с Ant, давайте создадим что-нибудь полезное, например, актуальное на сегодняшний день сжатие набора js-файлов с помощью YUICompressor.

    Поставим себе задачу. У нас есть набор JavaScript-файлов, представляющих собой одну библиотеку. Чтобы эта библиотека загрузилась максимально быстро для пользователя, нужно объединить все файлы в один и сжать результат с помощью YUICompressor. Создадим в нашем проекте ant-test две папки: js_src и js. В первой будем хранить исходник, а во второй — сжатый результат. Создадим несколько файлов в папке js_src: file1.js, file2.js и file3.js, в каждый из этих файлов напишем какой-нибудь код.

    Приступим к написанию сценария. Определимся, каких целей мы хотим достичь. Нам нужно построить библиотеку lib.js (первая цель), для чего нужно объединить все файлы в один (вторая цель) и сжать их (третья цель). Вот примерный сценарий:

    01 
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
       Done.  Concatenating files        Minifying files   

    Сразу рассмотрим все новые элементы и атрибуты. У элемента появился атрибут default — это цель или набор целей, которые будут выполняться по умолчанию при вызове этого сценария. Нам это понадобится чуть позже. Атрибут basedir задает директорию, относительно которой будут считаться все относительные пути к файлам и директориям. Его указывать необязательно, по умолчанию он равен абсолютному пути к проекту, в котором находится сценарий.

    Обратите внимание на атрибут depends у цели build-lib. Он определяет цели, от которых зависит текущая цель. В данном случае мы говорим: «Выполнить цель build-lib только после того, как будут выполнены concat-files и minify». Это очень удобный (но далеко не единственный) механизм для использования одинаковых последовательностей заданий в разных целях. Особенность зависимостей Ant заключается в том, что одна цель будет выполнена только один раз в течение сессии. Подробнее об этом читайте в документации.

    Как видно из примера, у нас есть точка входа — цель build-lib (атрибут default у ), которая зависит от двух других целей: concat-files и minify. Объединение (конкатенация) файлов выполняется с помощью задания , в атрибуте destfile указываем, в какой файл хотим сохранить результат. За то, какие именно файлы и в какой последовательности должны быть объединены, отвечает файловый ресурс , который мы отдаем заданию . Думаю, здесь все понятно: в атрибуте dir указываем, в какой директории нужно искать файлы, а с помощью элементов задаем конкретные файлы. Типов ресурсов существует довольно много, большинство из них нужны Java-программистам. Для нас наиболее востребованными будут и . Основное их различие в том, что в первом случае указывается четкий набор файлов, а во втором — задается набор файлов с помощью паттернов включения и исключения. Например, сейчас мы могли бы заменить на такую конструкцию:

    01 
    02
    03

    Но у этого способа есть ряд недостатков. Во-первых, в набор попадут абсолютно все файлы с расширением js в папке js_src, что не всегда нужно на реальных проектах. А во-вторых, даже если указать в паттернах названия файлов, этот ресурс не гарантирует тот порядок следования, в котором вы хотите их объединить. То есть если важно, в каком порядке должны объединяться файлы, лучше задавать набор через .

    В приведенном примере смущает то, что пути к папкам жестко зашиты в код сценария, поэтому давайте вынесем их в отдельные свойства:

    01 
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    25
         Done.  Concatenating files        Minifying files   

    Свойства в Ant задаются с помощью тега . Свойства очень похожи на константы в языках программирования: задав один раз, вы больше не сможете поменять их во время исполнения сценария. Обращаться к свойствам следует через конструкцию $ . Свойства можно задавать не только внутри , но и внутри , а также глобально для всего IDE через Preferences → Ant → Runtime → Properties.

    Хозяйке на заметку

    Проверьте работу сценария: сделайте двойной клик в Ant View на цели build-lib. У вас в папке js должен появиться файл lib.js, в котором будет содержимое всех трех файлов. Если файл не появился, обновите (Refresh) папку js в Project Explorer.

    Файлы объединять мы научились, теперь научимся сжимать их с помощью YUICompressor. Сам разработчик этой замечательной библиотеки рекомендует вызывать компрессор как внешнюю программу, мы же поступим куда более интересно: создадим отдельную задачу, которая будет сжимать файлы.

    Модульная структура Ant позволяет расширять его, дописывая новые задачи на Java. Сейчас мы научимся одному из способов добавления таких задач в сценарий сборки.

    1. Скачайте YUICompressor и распакуйте куда-нибудь архив, например, в папку C:\yuicompressor.
    2. Скачайте YUIAnt.jar и положите его в папку build, где вы распаковали YUICompressor (C:\yuicompressor\build).
    3. Добавьте вот такую конструкцию в сценарий внутрь тега :

    01 
    02
    03
    04
    05
    06
    07

    С помощью нее мы создали новую задачу . Чтобы она работала, нужно указать полный путь к Java-классу этой задачи (com.yahoo.platform.yui.compressor.YUICompressTask), а также указать путь, где находится файл с этим классом ( / ). Теперь можно дописать цель minify:

    01 
    02
    03
    04
    05
    06
    07
    08
     Minifying files      

    Мы вызвали задачу , указав ей набор файлов, которые необходимо сжать, с помощью конструкции . Так как мы используем задачу, а не вызов внешнего файла, Ant Editor сам подхватил нужный класс и теперь будет выдавать code complete по атрибутам задачи . Итоговый сценарий сборки выглядит так:

    01 
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
               Done.  Concatenating files        Minifying files       

    Проверьте работу цели build-lib, в папке js у вас должен оказаться пожатый lib.js.

    Сборка проекта

    А теперь перейдем к самому интересному. Удобство интеграции Ant с Eclipse заключается не в том, что вы можете в любой момент вызвать нужную цель из окошка, а в том, что вы можете указать сборщик для проекта.

    Зайдите в свойства проекта ant-test (Project → Properties) и перейдите в пункт Builders. Нажмите кнопку New и в диалоговом окне выберите Ant Builder. В появившемся окне задайте какое-нибудь имя вашему сборщику (например, My first Ant build). Теперь нужно выбрать сценарий (buildfile). Нажмите на кнопку Browse workspace и в проекте ant-test выберите файл build.xml. Перейдите на вкладку Refresh и отметьте пункты Refresh resources upon completition и The project containing the selected resource. Это значит, что после работы сборщика будет автоматически обновляться список файлов проекта, поэтому в Project Explorer вы всегда будете видеть актуальную версию проекта. Перейдите во вкладку Targets, там вы увидите список целей, которые будут выполняться при разных типах сборки. В частности, в разделах After a «Clean» и Manual build будет указано default target selected. Это означает, что будет выполняться цель, указанная по умолчанию у проекта (помните атрибут default у ?). Давайте еще укажем цель в Auto build, для этого нажмем на кнопку Set targets cправа от Auto Build и сразу нажмем на ОК — будет выбрана цель по умолчанию.

    Теперь мы можем вызывать сборщик по нажатию на Project → Build Project (на эту команду можно повесить горячие клавиши). А если выберем опцию Project → Build Automatically, то нам даже ничего делать не надо: проект будет сам собираться при любом изменении любого файла проекта.

    Таким образом, мы пришли к абсолютно прозрачной автоматизации рутинных задач при работе в IDE. Все, что необходимо сделать, — создать простой сценарий, указать его в качестве сборщика и включить опцию автоматической сборки. Каждый раз, когда вы модифицируете проект (редактируете, удаляете и добавляете файлы) все необходимые действия будут выполнятся в фоновом режиме, не отвлекая разработчика. Это особенно полезно при работе в команде: любой разработчик может внести изменения в сценарий, которые будут автоматически выполняться у всех остальных.

    В этой статье были поверхностно рассмотрены некоторые базовые приемы работы с Ant. Советую ознакомиться со списком стандартных задач, там есть такие полезные вещи, как синхронизация каталогов, закачка файлов по FTP, выполнение SQL-запросов, XSL-трансформации, архивация файлов и многое другое.

    В следующей статье мы продолжим изучение Ant — в частности, научимся писать дополнительные задачи на JavaScript. В качестве домашнего задания предлагаю сделать следующее: вынесите определение задачи в отдельный файл и подключите его к сценарию (подсказка: воспользуйтесь заданием , а также задайте глобальное свойство, в котором будет храниться путь к файлу с определением).

    Посмотреть на Ant в действии можно в студийной лекции для технологов.

    Дополнительные материалы:

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *