Руководства, Инструкции, Бланки

Apache Ant Руководство img-1

Apache Ant Руководство

Рейтинг: 4.0/5.0 (1624 проголосовавших)

Категория: Руководства

Описание

Настройка и использование Apache Ant

Устанавливаем Ant, и разрабатываем структуру проекта

Итак, прежде чем использовать Ant вам нужно его установить, и настроить несколько переменных окружения. Установка сводится к простой распаковке архива в выбранную вами папку, а создание переменных окружения в Windows можно выполнить, зайдя в свойства "Моего компьютера", вкладка "Дополнительно -> Переменные среды". В Linux есть несколько способов задать переменные окружения, соответствующие инструкции можно посмотреть в документации к дистрибутиву, или к командной оболочке, которую вы используете.

Нужно создать 3 переменных:
1) ANT_HOME = C:\ant (укажите тут путь к папке, в которую вы установили Ant);
2) JAVA_HOME = C:\Program Files\Java\jdk1.5.0_06\ (укажите тут путь к папке, в которую вы установили Java SDK);
3) PATH = C:\ant\bin (укажите тут путь к папке, в которой находится файл ant.bat).

Теперь разберемся, как использовать Ant.
В первую очередь нужно продумать структуру проекта. Тут все зависит от ваших фантазии и задач.
В качестве примера я взял такую структуру. Проект находится в папке myProject. Исхдоники - в папке src. Тесты – в папке test. Скомпилированные файлы исходников должны размещаться в папке dist\classes, а скомпилированные тесты – в dist\tests. jar-файл будет размещен в папке dist.

В наш проект входят 3 файла программы (Main.java, Class1.java, Class2.java), манифест (manifest.mf), и 2 файла с тестами (Class1Test.java, Class2Test.java). Причем, файлы Class1.java и Class2.java входят в состав пакета tools.utils .
В общем, наш проект имеет такую структуру (рис.1).


Рис.1. Структура проекта

На папку nbproject внимания не обращайте, это служебная папка NetBeans.

Другие статьи

Apache Ant

Apache Ant

У этого термина существуют и другие значения, см. Апач .

У этого термина существуют и другие значения, см. ant .

Apache Ant (англ.   ant  — муравей и акроним  — «Another Neat Tool») — утилита для автоматизации процесса сборки программного продукта. Является платформонезависимым аналогом утилиты make. где все команды записываются в XML -формате.

Ant был создан в рамках проекта Jakarta. сегодня — самостоятельный проект первого уровня Apache Software Foundation .

Первая версия была разработана инженером Sun Microsystems Джеймсом Дэвидсоном (James Davidson   (англ.) русск. ), который нуждался в утилите, подобной make. разрабатывая первую референтную реализацию J2EE .

Ant, в отличие от другого сборщика проектов Apache Maven. обеспечивает императивную. а не декларативную сборку проекта.

Описание

В отличие от make, утилита Ant полностью независима от платформы, требуется лишь наличие на применяемой системе установленной рабочей среды Java  — JRE. Отказ от использования команд операционной системы и формат XML обеспечивают переносимость сценариев.

Управление процессом сборки происходит посредством XML -сценария, также называемого Build-файлом. В первую очередь этот файл содержит определение проекта, состоящего из отдельных целей (Targets ). Цели сравнимы с процедурами в языках программирования и содержат вызовы команд-заданий (Tasks ). Каждое задание представляет собой неделимую, атомарную команду, выполняющую некоторое элементарное действие.

Между целями могут быть определены зависимости — каждая цель выполняется только после того, как выполнены все цели, от которых она зависит (если они уже были выполнены ранее, повторного выполнения не производится).

Типичными примерами целей являются clean (удаление промежуточных файлов), compile (компиляция всех классов), deploy (развёртывание приложения на сервере). Конкретный набор целей и их взаимосвязи зависят от специфики проекта.

Ant позволяет определять собственные типы заданий путём создания Java-классов. реализующих определённые интерфейсы .

Часто применяемые задания (Tasks)

В поставку входит множество библиотек, затрагивающие широкий набор задач. Кроме этого на веб-сайте проекта доступны дополнительные библиотеки, расширяющие функционал продукта, например, для интеграции со сторонними системами. Стандартная версия содержит более 150 типов задач. Примеры таких команд представлены ниже.

Пример сценария

Данный сценарий определяет две цели — clean и build. Первая выполняет удаление временных файлов, вторая — компиляцию и создание JAR -архива. Цель build зависит от clean. поэтому при её запуске будет сначала выполнена очистка и только затем — задания собственно сборки. Build также выбрана в качестве цели по умолчанию. Это означает, что она будет выполнена при обработке данного сценария без явного указания цели.

Примечания См. также
  • Apache Maven  — альтернативный инструмент со схожими задачами
  • Gradle — альтернативный инструмент, поддерживающий задания (tasks) из ant
Ссылки

Проекты верхнего уровня

Derby  • Torque • DdlUtils • OJB • JDO

Apache Web Services

Axis • Axis2  • CXF   • WS-Commons • EWS • JaxMe • jUDDI • Kandula • Mirae • Muse • Pubscribe • Sandesha • Scout • SOAP • Synapse • TSIK • Tuscany • Woden • WSIF  • WSRF • WSS4J • XML-RPC

Развивающиеся проекты (Incubator)

XAP • River • OpenEJB • OpenJPA • Graffito • Tuscany • Log4Net • Roller  • Felix • Abdera • CeltiXfire • FtpServer • Heraldry • Ivy • JuiCE • Kabuki • Lokahi • Lucene.Net • mod_ftp • NMaven • Ode • stdcxx • Woden • WSRP4J • Yoko • WADI • Qpid  • stdcxx • TripleSoup • UIMA• Adobe Flex

AxKit • Beehive • Cactus • ECS • Excalibur • Harmony  • HiveMind • iBATIS • Jakarta  • ORO • Regexp • Shale  • Slide • Taglibs

Apache Ant

Apache Ant

У этого термина существуют и другие значения, см. Апач .

У этого термина существуют и другие значения, см. ant .

Apache Ant (англ.   ant — муравей и акроним — «Another Neat Tool») — утилита для автоматизации процесса сборки программного продукта. Является платформонезависимым аналогом утилиты make. где все команды записываются в XML -формате.

Ant был создан в рамках проекта Jakarta. сегодня — самостоятельный проект первого уровня Apache Software Foundation.

Первая версия была разработана инженером Sun Microsystems Джеймсом Дэвидсоном (Шаблон:Не переведено 3 ), который нуждался в утилите, подобной make. разрабатывая первую референтную реализацию J2EE.

Ant, в отличие от другого сборщика проектов Apache Maven. обеспечивает императивную. а не декларативную сборку проекта.

Описание

В отличие от make, утилита Ant полностью независима от платформы, требуется лишь наличие на применяемой системе установленной рабочей среды Java — JRE. Отказ от использования команд операционной системы и формат XML обеспечивают переносимость сценариев.

Управление процессом сборки происходит посредством XML -сценария, также называемого Build-файлом. В первую очередь этот файл содержит определение проекта, состоящего из отдельных целей (Targets ). Цели сравнимы с процедурами в языках программирования и содержат вызовы команд-заданий (Tasks ). Каждое задание представляет собой неделимую, атомарную команду, выполняющую некоторое элементарное действие.

Между целями могут быть определены зависимости — каждая цель выполняется только после того, как выполнены все цели, от которых она зависит (если они уже были выполнены ранее, повторного выполнения не производится).

Типичными примерами целей являются clean (удаление промежуточных файлов), compile (компиляция всех классов), deploy (развёртывание приложения на сервере). Конкретный набор целей и их взаимосвязи зависят от специфики проекта.

Ant позволяет определять собственные типы заданий путём создания Java-классов. реализующих определённые интерфейсы.

Часто применяемые задания (Tasks)

В поставку входит множество библиотек, затрагивающие широкий набор задач. Кроме этого на веб-сайте проекта доступны дополнительные библиотеки, расширяющие функционал продукта, например, для интеграции со сторонними системами. Стандартная версия содержит более 150 типов задач. Примеры таких команд представлены ниже.

Пример сценария

Данный сценарий определяет две цели — clean и build. Первая выполняет удаление временных файлов, вторая — компиляцию и создание JAR -архива. Цель build зависит от clean. поэтому при её запуске будет сначала выполнена очистка и только затем — задания собственно сборки. Build также выбрана в качестве цели по умолчанию. Это означает, что она будет выполнена при обработке данного сценария без явного указания цели.

Примечания См. также
  • Apache Maven — альтернативный инструмент со схожими задачами
  • Gradle — альтернативный инструмент, поддерживающий задания (tasks) из ant
Ссылки Ruwiki - Русское подразделение Википедии

Большое пособие по Apache Ant

Большое пособие по Apache Ant

[Disclaimer: Данная статья была переведена в рамках "Конкурса на лучший перевод статьи" на сервисе Quizful. Ссылка на оригинал находится внизу страницы.]

Apache Ant - мощный инструмент для преобразования ваших структур разработки в структуры развертывания приложений. Он является декларативным и все инструкции командной строки, используемые для развертывания приложения, представляются простыми XML -элементами. Не вдаваясь в детали, данное пособие шаг за шагом расскажет вам как организовать сборку web-приложения с помощью одного-единственного XML-файла.


Моя структура разработки состоит из следующих каталогов:

1. web - каталог для всех JSP, HTML, JavaScript-ов и таблиц стилей. Вы можете создать подкаталоги, если требуется, для каждого набора файлов;
2. src - каталог для файлов java-классов, содержащая POJO или сервлеты;
3. etc - каталог для всех конфигурационных файлов, вроде наиболее распространенного web.xml;
4. lib - каталог для jar-файлов, необходимых для работы моего приложения. Я даже включил servlet-api.jar в этот каталог, так как вам, возможно, придется разворачивать ваше web-приложение на удаленном сервере после компиляции;
5. build - временный каталог для хранения скомпилированных файлов;
6. dist - каталог, куда будет помещен окончательно упакованный war-файл (дистрибутив);
7. ant - каталог для файла build.xml и внешних properties-файлов.

Все эти каталоги находятся в родительской директории “WebApp“.

Вот три вещи, которые вам надо держать в уме для создания файла сборки Ant:

1. tasks (задачи) - соответствуют инструкциям командной строки, например javac, war и т.д. Группа задач может выполняться последовательно с помощью указания целей.
2. target (цель) - это что-то наподобие функции, в которой вы размещаете задачи, таким образом получая возможность повторно вызывать их без дублирования.
3. properties (свойства) - используются для определения переменных в ваших файлах сборки, что очень полезно, в случае когда название проекта или названия директорий могут изменяться.

Одна из самых приятных особенностей Ant в том, что вы можете хранить файл свойств отдельно, вместо того, чтобы определять все переменные внутри файла сборки. Файлы свойств состоят из перечисления всех требуемых переменных и их значений в виде пар имя-значение и представляют собой обычный текстовый файл. В данном пособии я буду использовать внешний файл свойств.

При написании пособия, я использовал следующие инструменты:

1. Java версии 1.5
2. Apache Tomcat 5.0
3. Apache Ant 1.6.5

Итак, мы готовы приступить к освоению Ant. Для этого создайте файл с именем “build.properties“. Это будет наш внешний файл с переменными:

ВНИМАНИЕ : обязательно нужно нажать ENTER, чтобы начать новую строку после последней, иначе Ant выдаст ошибку “BUILD FAILED for some unknown reason”

Нет необходимости давать переменным имена с точкой. Вы можете использовать такие имена как “projectName”, но значение не должно содержать кавычек. То есть НЕ должно быть чего-то вроде projectName=”WebApp”

Для создания файла сборки, мы должны помнить, какие действия необходимы для развертывания проекта. Чтобы упростить себе жизнь, просто создайте модули (targets), для всех действий при развертывании web-приложения:

1. clean - удалить результаты предыдущих развертываний приложения, если они были
2. init - создать необходимую структуру для развертывания
3. compile - скомпилировать ваши сервлеты или POJO
4. copy - скопировать скомпилированные файлы и web-содержимое в структуру развертывания, созданную модулем init
5. war - создать war-файл и открыть браузер

Начните писать файл build.xml в каталоге ant следующим образом:
Теперь мы должны установить classpath для servlet-api.jar для компиляции наших сервлетов, поэтому поместите servlet-api.jar в каталог lib вашей структуры разработки. Проверьте свойство “default” у элемента <project>. В нем установлен ПОСЛЕДНИЙ модуль (target) файла сборки. В нашем случае это “war”

Все последующие XML-элементы будут размещены внутри <project></project>. созданного ранее. Напишите элемент для задания classpath,
Теперь вам надо прописать все необходимые jar-ы в classpath для успешной компиляции исходных файлов java. $ используется для получения значения переменной “lib.dir”, т.е. lib.

Теперь пройдемся по модулям (targets) упомянутым в списке выше:

<target name="clean">
<echo>Cleaning the $</echo>
<delete dir="$"/>
</target>

Здесь я удаляю каталог сборки на случай если он уже существовал с ранее скомпилированными файлами
Элемент <echo> служит только для вывода текущего действия в командной строке.

2. init
Здесь я создаю обычную структуру развертывания, требуемую для tomcat, а именно WebApp/WEB-INF/classes, и т.д. Не имеет значения, существовала ли директория WEB-INF до создания каталога classes. Ant автоматически создает все необходимые родительские каталоги, если их не было.

3. compile
Наиболее важный и наиболее богатый на ошибки шаг. Убедитесь, что classpath настроен корректно в элементе <path>. Если все сделано правильно, то все файлы в директории “src.dir” успешно скомпилируются и переместятся в build\WebApp\WEB-INF\classes. Обратите внимание на свойство “depends” элемента <target>. Оно используется для последовательной связи модулей (targets).

4. copy
Здесь я просто копирую скомпилированные классы и web-содержимое в соответствующие каталоги структуры развертывания.

5. war
Это последний модуль (target) в моем файле build.xml, создающий WebApp.war, необходимый для развертывания. “war” - инструкция Ant которой вы передаете путь к web.xml и каталог содержащий структуру развертывания, то есть, в нашем случае, директорию “build”. destfile - окончательное расположение и имя war-файла, которое должно принять вид dist\WebApp.war после отработки скрипта.

Запуск скрипта

Сохраните build.properties и build.xml в каталоге ant. Убедитесь, что в переменной среде ANT_HOME прописан каталог bin для вашей установки ant. Теперь, все, что вам нужно сделать - запустить команду ant на файле сборки таким образом:

C:\> cd WebAppant\ant
C:\WebAppant\ant> ant

Вот и все. В случае успеха, ваши разработки в итоге станут полностью упакованным WebApp.war.

Заключительные слова

Итак, из наших исходных файлов, с помощью одного XML-файла и замечательного инструмента Ant, мы сделали полностью упакованный war-файл, готовый к развертыванию в tomcat manager. Можно копать глубже для создания сложного build.xml, использующего полный набор элементов, предоставляемый Ant-ом. Но цель данного пособия лишь ознакомить вас с использованием Apache Ant. Если у вас возникли какие-либо трудности в понимании конкретных элементов, пожалуйста, прочтите их подробное описание в документации Apache Ant.

Если Вам понравилась статья, проголосуйте за нее

Eclipse: знакомство с Ant

Eclipse: знакомство с Ant 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. Запишем туда вот такой сценарий:
  • Откроем вид Ant: Window → Show View → Other.


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

  • Рассмотрим подробнее структуру сценария. Родительским элементом является <project> с атрибутом name — это название сценария построения.

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

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

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

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

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

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

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

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

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

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

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

    Не зря в начале статьи отдельно подчеркивалось, что файл build.xml открывается через Ant Editor — этот редактор имеет очень удобный code complete, который работает со свойствами (<property> ), целями (в атрибутах depends. default и так далее), а также с доступными задачами и их атрибутами. Не забывайте об этой помощи, когда будете писать свои сценарии.

    Проверьте работу сценария: сделайте двойной клик в 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. Добавьте вот такую конструкцию в сценарий внутрь тега <project> :

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

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

    Проверьте работу цели 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 у <project> ?). Давайте еще укажем цель в Auto build, для этого нажмем на кнопку Set targets cправа от Auto Build и сразу нажмем на ОК — будет выбрана цель по умолчанию.

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

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

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

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

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

    — Скринкаст (Квиктайм, 101 МБ)

    Автоматизация проектов при помощи Apache Ant

    Автоматизация проектов при помощи Apache Ant

    Вам не кажется, что хватит выполнять задачи, которые можно автоматизировать? Сегодня мы этим и займёмся! Я покажу вам, как автоматизировать некоторые процессы. В этом уроке вы научитесь работать с Apache Ant .

    Интро: Что такое Ant?

    Ant позволяет невероятно простым способом автоматизировать задачи.

    Ant - это специализированный софт, который предназначен для автоматизации софта. Его произвела фирма Apache (да, та же что сотворила сервер Apache), и его главной целью было создание приложений на Java. Когда вы пишите программное обеспечение (или веб приложение, сайт), вы выполняете одни и те же операции при начале работы с новым проектом. Порой это занимает внушительное количество времени, которое можно было потратить на что-то другое. Ant позволяет выполнять сразу несколько задач при помощи парочки команд, которые нужно набрать в терминале.

    Готовы? Ну тогда поехали!

    Шаг 0: Создание проекта

    Перед тем, как мы перейдём к самому Ant, нам необходим простой проект. Мы будем использовать файл index.html со следующим содержанием:

    Как вы уже успели заметить, этот фрагмент описывает весь тестовый проект. Все исходники вы можете найти в демо файлах, включая CSS и JavaScript.

    И что же мы будем делать с этим проектом? Как вы уже заметили, мы присоединяем немалое количество файлов CSS и JavaScript к нашему проекту. Их мы проверим на работоспособность, хорошенько сожмём и через FTP закинем на сервер. Но перед всем этим, нам необходимо установить сам Ant.

    Шаг 1: Установка Ant

    Установка Ant может стать довольно-таки сложной задачей. Но благодаря специальным установочным файлам для Windows и Mac установочный процесс становится намного проще. Если вы пользуетесь Linux, то вы тоже можете без проблем установить себе Ant, правда для этого придётся немного погуглить.

    Если вы являетесь пользователем Mac, то у вас наверняка Ant уже установлен; однако некоторые продвинутые задачи (например, такие как работа с FTP) не будут у вас работать. Для этого необходимо установить последнюю версию данного продукта.

    Перед тем как мы начнём, я хотел бы вам показать полные инструкции, которые предоставляет сам Apache: вы можете найти их тут. (На самом деле это целый справочник по Ant; Я бы не смог написать лучше, чем тот, что уже готов. На странице, которую я указал, вы можете найти раздел “Installing Apache Ant”.) Всё, что я скажу вам ниже, вы можете найти на странице, которую я вам дал (ну и конечно же даже больше), но моя версия более удобна для web-разработчиков.

    В первую очередь, нам необходимо определить, все ли пакеты Java установлены. Вне зависимости от того, что вы используете Windows или Mac, вам необходимо установить Java Development Kit (JDK) – версия не ниже 1.4. Вы можете скачать её тут. Если вы не уверены в том, какая версия JDK у вас установлена, запустите команду java -version в терминале или командной строке. Как я понял, версия JDK совпадает с версией Java, которая стоит на вашем компе.

    Теперь давайте скачаем последнюю версию Ant. Вы можете скачать её отсюда (конечно же вы можете скачать код отсюда и самим его скомпилировать, если хотите):

    После того, как вы всё скачали и распаковали, вам необходимо начать установку. Вот что должно у вас получиться:

    Первые шаги установки зависят от платформы, которой вы пользуетесь. Давайте начнём с шагов, которые ждут вас на Windows:

    Шаги установки на Windows

    В первую очередь, вам необходимо определиться с местом, куда будет установлен Ant. Я выбрал C:\ant, но вы можете выбрать и другое месторасположение. Если вы повторяете шаги за мной, то создайте эту папку и переместите каталоги bin, lib, и etc в неё. Также сюда вам необходимо переместить fetch.xml и get-m2.xml.

    После того, как с этим покончено, вам необходимо установить некоторые переменные среды:

    • Вам будет необходима переменная с именем ANT_HOME; Значение переменной должно соответствовать пути к самому Ant. К примеру: C:\ant.
    • Далее вам понадобится переменная JAVA_HOME; она уже может присутствовать у вас в системе, если же нет, то она должна ссылаться на Java. В моём случае это C:\Program Files\Java\jdk1.6.0_18.
    • Далее вам необходимо отредактировать переменную Path. Она содержит список файлов и папок, которые подключаются, когда вы работаете с командной строкой. НЕ НУЖНО там всё заменять; просто добавьте ;%ANT_HOME%\bin в самый конец и всё. Не забудьте о точке с запятой; Она служит разделителем в этом списке. Вы наверное уже догадались, что %ANT_HOME% - это переменная, которую мы создали ранее.

    Теперь у вас Ant успешно установлен на вашем Windows! Далее есть ещё несколько важных шагов, которые нужно пройти.

    Чтобы завершить установку, вам необходимо сделать следующее. Существует немало компонентов, которые не установлены в Ant по умолчанию, но которые понадобятся в нашем проекте. Давайте же установим и их.

    Начнём с того, что откроем командную строку или терминал и перейдём в каталог, который только что создали (Ant). Сейчас мы будем иметь дело с файлом fetch.xml. Теперь запустите команду:

    Это команда запустит процесс скачивания и установки некоторых компонент; это может занять некоторое время.

    Теперь ваш Ant установлен и полностью готов к работе.

    Шаг 2: Создание файла build.xml

    Ant использует специальный XML файл для хранения задач, которые относятся к тому или иному проекту.

    Ant использует XML файл для хранения задач для текущего проекта; когда вы находитесь в этой директории посредством командной строки, то можете запускать команды следующего вида ant TASK_NAME_HERE, и он найдёт соответствующую задачу в XML файле.

    Если вы не знакомы с форматом XML, то не волнуйтесь. XML расшифровывается как eXtensible Markup Language, и он очень похож на HTML. В нём также используются теги и атрибуты. Он также очень похож на XHTML, в своей строгой ограниченности: все теги и атрибуты должны быть написаны прописными буквами, значения помещены в кавычки, необходим doctype и многое другое. Не волнуйтесь, вы всё это быстро освоите.

    Файл XML, который используется Ant по умолчанию должен называться build.xml; Вам необходимо переместить этот файл в каталог с проектом.

    Итак, что же должно храниться в этом XML файле? В первую очередь, вот это:

    Не правда ли похож на HTML? Первая строка - это XML doctype. Далее у нас следует родительский элемент, который в нашем случае называется project. Ему я добавил несколько атрибутов: name, который будет объяснять какого рода будут задачи; и default, который содержит задачу по умолчанию.

    Теперь я продемонстрирую запуск задачи. К примеру, мы создали задачу с названием call_mom. Для того, чтобы её запустить, нужно сделать следующее:

    Если вы будет запускать Ant для вашего проекта, то запустится задача, которая стоит по умолчанию. В нашем случае мы назначили задачу initialize задачей по умолчанию.

    Эти две записи эквивалентны.

    Теперь, когда у нас есть файл build.xml, мы можем создать первую задачу.

    Шаг 3: Написание первой задачи

    Задачи представляют собой тег targets, который хранится в файле build.xml. Ну что-то типа этого:

    Добавьте это в ваш файл build.xml и запустите ant call_mom через консоль. В результате вы должны получить что-то вроде этого:

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

    Но как я мог догадаться, что echo - это задача? Что ж, тут вы можете получить список всех встроенных задач. Одни и те же задачи можно выполнить разными способами. К примеру, то же самое мы можем сделать следующим образом: <echo message="Hi Mom!" />. И это ещё не предел.

    Теперь, когда вы уже поняли основные принципы Ant, можем перейти к некоторым свойствам.

    Шаг 4: Создание файла Свойств

    Ant также содержит свойства, которые очень смахивают на знакомые вам переменные.

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

    Нашей задаче мы дали название get_properties. Она содержит два действия: первое, мы используем задачу property для импортирования файла (благодаря атрибуту file). После этого, мы выводим сообщения о том, что импорт прошёл успешно. Всё очень просто.

    Конечно же нам необходимо создать файл ant.properties. Его содержание будет очень простым:

    Вы можете подумать, что мы всё усложняем, ведь названия переменных намного больше их значений. Это так, но это даёт нам некие шибкие возможности, которые мы можем использовать в build.xml.

    Шаг 5: Создадим ещё парочку задач

    Ну всё, шутки в сторону. Теперь настало время написать несколько серьёзных задач для нашего файла build.xml.

    Вот список того, что мы хотим сделать:

    • Скомпилировать CSS файлы.
    • Сжать CSS файлы.
    • Скомпилировать JavaScript файлы.
    • Сжать JavaScript файлы.
    • Загрузить всё на сервак.
    • Инициализировать другие задачи.
    • Убраться за собой.

    Для всего этого мы будем использовать несколько различных тактик. Этим-то и хорош Ant.

    Компиляция CSS и JavaScript

    Давайте начнём с задач по компиляции; Задача заключается в том, чтобы конкатенировать несколько файлов в один. Для этого Ant содержит специальную команду concat.

    Я назвал задачу concat_css. Внутри мы запускаем команду concat. Как вы можете заметить, единый сформированный файл (destfile) будет создан в каталоге assets/style.css. Вы так же заметили, что я пользуюсь свойством assets_dir, которое заменится на необходимое нам значение. Для этого свойство нужно заключить в скобки и перед ними поставить знак доллара.

    Внутри задачи concat мы определили filelist Это всего лишь один из способов, которые мы можем использовать для перечисления файлов. Я использую именно этот способ, т.к. он позволяет мне указать порядок файлов для конкатенации. Ему я также даю id, который служит неким параметром. Так вы можете заметить атрибут dir, который хранит адрес, где находятся файлы. Внутри же мы создаём ещё одни блоки file, с атрибутами name.

    Вот ваша первая реальная задача! Надеюсь вопросов у вас не осталось. Объединение файлов JavaScript не будет особо отличаться:

    Сжатие файлов CSS и JavaScript

    А вот тут придётся немного поколдовать, т.к. в Ant не предусмотрено такой задачи. Однако, Ant поддерживает команды java для файлов с расширением .jar. Это супер новость для нас, т.к. YUI Compressor доступен нам как файл .jar. Вы можете скачать его тут. Скачайте его и переименуйте, если хотите. Я сохранил его в каталоге MY_USER_FOLDER/bin/yui.jar.

    Теперь YUI Compressor сожмёт наши JavaScript и CSS файлы. Всё что мы тут можем сделать, так это создать отдельную задачу compress, а затем вызывать её из какой-то другой задачи. Мы можем это сделать, т.к. Ant поддерживает вызов одних задач из других. Ну а теперь снова практика:

    Тут мы используем команду java. Это очень похоже на команду, которую мы бы написали в командной строке. Атрибут jar ссылается на .jar файл. Если атрибут fork равен true, то jar запустится и сделает всю работу. Затем внутри блока java, мы определяем некоторые аргументы. В командной строке мы бы сделали это так input.file -o output.file. Тут почти то же самое.

    Откуда же берётся свойство file? Вот отсюда:

    Это и есть наша задача для сжатия CSS. Во-первых, прошу отметить, что блок target содержит второй атрибут: depends. Вы наверное уже всё поняли. Задача compress_css зависит от задачи concat_css. Именно поэтому мы вызываем её первой. Таким образом, мы можем вызвать compress_css, которая в первую очередь вызовет concat_css.

    Что же теперь? Мы выполняем задачу antcall, которая в свою очередь, вызовет другую задачу, содержащуюся в файле build.xml — в частности задачу compress. Внутри мы можем указать столько параметров, сколько захотим, каждый из которых может иметь имя и значение. Это очень похоже на вызов функции.

    А вот и JavaScript версия:

    Не забудьте, всё зависит от concat_js.

    Сдвигаемся с мёртвой точки

    Вернёмся к самому началу - блоку project — мы назначили задачей по умолчанию задачу initialize. Мы ещё не создали эту задачу. Вот она:

    Эта задача зависит от двух других (одну нам ещё предстоит сделать); список задач, мы просто разделяем запятыми.

    Внутри задачи мы создаём каталог assets благодаря задаче mkdir (так же как мы бы сделали это в терминале). Далее мы делаем несколько вызовов ant, один для сжатия CSS и второй для сжатия JavaScript. Запомните, что эти две задачи зависят от конкатенации. В конце концов, мы выведем echo сообщение, чтобы пользователь понял, что работа завершена.

    Убираем за собой

    А что же насчёт задачи clean_up? Она очень проста:

    Данная задача удаляет каталог assets. Это не крайне нужная задача. Я создал её просто для порядка.

    Закачиваем проект

    Давайте создадим ещё одну задачу; мы хотим загрузить наш проект на сервер. Благодаря ftp команде, это реализуется очень просто.

    Мы назовём эту задачу upload_files, и она будет зависеть от initialize. Тут мы используем FTP задачу. Как вы могли заметить, все необходимые данные записываются в атрибуты. Если вы работали с FTP клиентами, то вам всё это должно быть знакомо.

    • Внутри блока ftp, мы создали коллекцию файлов, которые будут закачены.В нашем случае мы используем элемент fileset.
    • У нас также имеется атрибут dir в блоке filset, который определяет родительский каталог.
    • Затем внутри мы используем блок include для выборки нужных нам файлов: для перечисления файлов, снова используем атрибуты. В нашем примере, мы выбираем всё содержание каталога assets и файл index.html.

    После того, как вы запустите эту задачу, она закачает все файлы на сервер!

    Обратите внимание на очерёдность всех задач. Если мы запустим ant из командной строки, то мы конкатенируем наши CSS и JavaScript файлы, и он не будут загружены; так по умолчанию. Если же мы хотим загрузить файлы, то нам необходимо запустить ant upload_files; Тут всё зависит от initialize. Конечно же мы можем вызвать каждую задачу по отдельности (пример: ant compress_js).

    Вывод: нужно пользоваться

    Перед тем, как завершить данный урок, я бы хотел сказать ещё пару слов:

    • Заметьте, что я использую задачу initialize для вызова других задач. В этом случае всё более разделено семантически.
    • То что я вам показал, это всего лишь маленькая кроха от всех возможностей Ant. Если вы продолжите осваивать данный инструмент, то узнаете, что одни и те же задачи можно выполнить по-разному (в этой статье был пример с задачей echo). То, как я это делал, - “не единственный способ”!
    • Было бы прикольно заиметь задачу, которая будет парсить HTML, находить таблицы стилей и скрипты, расставляя их в правильном порядке. Однако, так как Ant не был создан для веб разработчиков, таких возможностей он не предоставляет. Нам приходится писать специальные antlib (расширения) на языке Java.

    Вот и всё! Я надеюсь, что вы чему-то научились и эти знания пригодятся вам в будущем. Благодарю за внимание!

    Хотите быстро изучить JavaScript и jQuery?

    Предлагаю использовать самый эффективный и современный метод обучения - видеокурс .

    За счет получения информации сразу по двум каналам (зрение и слух) эффективность обучения значительно превосходит обучение по книгам. А домашние задания и онлайн-тесты позволят вам постоянно думать на изучаемом языке и сразу проверять свои знания!

    Более 100 видеоуроков на одном DVD.

    Видеокурс "HTML с нуля"

    Если вы давно хотите как следует изучить HTML, то у меня для Вас есть отличная новость!

    Вы можете совершенно бесплатно получить полноценный курс по HTML из моего платного сборника. 33 видеоурока от Евгения Попова!

    Видеокурс "CSS с нуля"

    Если вы уже изучили HTML и хотите двигаться дальше, то следующим шагом будет изучение технологии CSS.

    Так же, как и в случае с HTML, вы можете совершенно бесплатно получить полноценный курс по СSS из моего платного сборника. Вас ждет 45 подробных видеоуроков от Евгения Попова!

    Видеокурс "Домен и хостинг"

    Если вы хотите разобраться с понятиями домена и хостинга, научиться создавать базы данных, закачивать файлы сайта на сервер по FTP, создавать поддомены, настраивать почтовые ящики для своего сайта и следить за его посещаемостью, то этот курс создан специально для вас!

    Получать новые уроки на E-mail: