Проектирование и анализ ПО Дмитриев Андрей Владиславович
Инструментарий разработчика: Ant Определение. Зависимости.
Что такое Ant? инструмент, предназначенный для автоматизации процесса сборки ПО. может выполнять все действия по подготовке проекта к публикации. Не зависит от платформы.
Прямой подход к сборке $ javac -d build src/Main.java src/Utils.java src/GUI.java $ cd build $ jar -cvf../application.jar Main.class Utils.class GUI.class Все действия по сборке проекта можно осуществлять в командной строке:
Первичная автоматизация #!/bin/sh javac -d build src/Main.java src/Utils.java src/GUI.java cd build jar -cvf../application.jar Main.class Utils.class GUI.class … или поместить в файл сценария:
Недостаток сценариев Сценарий специфичен для платформы.
Установка ant Скачать и установить JDK c сайта Скачать и установить дистрибутив ant с сайта Добавление каталога /bin/ в переменную окружения PATH.
Пример файла конфигурации (1/3) … Файл build.xml содержит информацию о свойствах
Пример файла конфигурации (2/3) … … и целях:
Пример файла конфигурации (3/3)
Состав файла конфигурации Файл имеет структуру XML документа. Элементы файла конфигурации:
Имеет параметры: Имя. Задание по умолчанию (compile). Рабочий каталог.
Представляют собой сущности, аналогичные неизменяемым переменным в языках программирования. Каждой свойство имеет заданное значение на протяжении времени выполнения сценария. Использование свойств:
Имеет свойства: Имя (обязательное), Зависимости, Описание. Описывает именованную последовательность действий.
Опции утилиты ant $ ant -help ant [options] [target [target2 [target3]...]] Options: -help, -h print this message -projecthelp, -p print project help information -version print the version information and exit -diagnostics print information that might be helpful to diagnose or report problems. -quiet, -q be extra quiet -verbose, -v be extra verbose -debug, -d print debugging information -lib specifies a path to search for jars and classes -logfile use given file for log -logger the class which is to perform logging -listener add an instance of class as a project listener -buildfile use given buildfile -file '' -f '' -keep-going, -k execute all targets that do not depend on failed target(s) -propertyfile load all properties from file with -D properties taking precedence -inputhandler the class which will handle input requests -find (s)earch for buildfile towards the root of -s the filesystem and use it -noclasspath Run ant without using CLASSPATH
Запуск сборки ant [–f build.xml] Buildfile:build.xml prepare: [mkdir ] Created dir::C:\antbook \build [mkdir ] Created dir::C:\antbook \build \classes [mkdir ] Created dir::C:\antbook \build \lib compile: [javac ] Compiling 3 source files to C::\antbook \build \classes BUILD SUCCESSFUL Total time:5 seconds
Пояснительная информация I'm cleaning up. При необходимости важные этапы сборки можно снабдить сообщениями: $ Ant clean Buildfile: build.xml clean: [echo] I'm cleaning up. BUILD SUCCESSFUL Total time: 1 second Вывод:
Сборка проекта Исходные коды. Создание файла build.xml. Запуск сборки. Проверка результатов.
Сборка проекта D:\...plateCourse\examples\ant_example>ls -l total 2 -rw-r--r-- 1 user1 Отсутств 1206 Jan 2 01:59 Stack.java Пусть есть проект, состоящий из одного класса: Предполагается, что ant и javac указаны в переменной PATH.
Создание файла build.xml Создадим основу документа и одну цель - создание каталога:
Создаем иерархию каталогов $ ant -f build_app.xml make.dirs Buildfile: build_app.xml make.dirs: [mkdir] Created dir: D:\work\ant_example\build [mkdir] Created dir: D:\work\ant_example\build\class BUILD SUCCESSFUL Total time: 0 seconds
Компиляция класса Добавим компиляцию с зависимостью:
Вызов компиляции $ ant -f build_app.xml compile Buildfile: build_app.xml make.dirs: compile: [javac] Compiling 1 source file to D:\work\ant_example\build\class BUILD SUCCESSFUL Total time: 7 seconds
Объединение целей Добавим цель для выполнения всех действий:
Очистка дистрибутива I'm cleaning up. Понадобится также возможность очистки проекта:
Значение CLASSPATH Необходимые для сборки классы должны быть упомянуты в переменной окружения или свойстве компилятора –cp. В файле конфигурации ant можно указать это свойство для цели: можно указать глобальное свойство, общее для всех целей:
Создание дистрибутива Упаковка классов в jar архив:
Файл свойств ant Свойства могут быть описаны в отдельном файле: # A sample Ant properties file # build.dir=dist prj_name=Stack application Файл свойств имеет форму ключ-значение:
Цели по условию Выполнение задач может зависеть от некоторых условий: Do debug build Pretending to do a production build
Выводы Поведение Ant не зависит от платформы. Ориентирован на ведение Java проектов.
Ссылки Ant, the definitive guide, Jesse Tilly, Eric M. Burke. Java Development with Ant, Erik Hatcher, Steve Loughran.
Q&A
Дмитриев Андрей Владиславович Спасибо!