Автоматизация сборки
Работа с проектом состоит из следующих этапов.
● Создать каталог / структуру каталогов
● Создать файл / множество файлов
● Написать код
● Проверить его
● Откомпилировать код
● Запустить и проверить модуль / систему
● Собрать модули в исполняемые файлы
● Создать дистрибутив.
Для сборки используются скрипты
● В Windows
– BAT (Batch, DOS)
– CMD (Command, Windows NT)
– PowerShell (Windows 2003)
● В Linux / Unix
– sh
– bash и т.п.
Пример BAT файла приведен на рис. 40.
Рис. 40
PowerShell исполбзует Командлеты (англ. cmdlets) — это специализированные команды, которые реализуют различную функциональность. Они именуются по правилу Глагол-Существительное, например Get-ChildItem, благодаря чему их назначение понятно из названия. Командлеты выводят результаты в виде объектов или их коллекций. Дополнительно они могут получать входные данные в такой же форме и, соответственно, использоваться как получатели в конвейере. Хотя PowerShell позволяет передавать по конвейеру массивы и другие коллекции, командлеты всегда обрабатывают объекты поочередно. Для коллекции объектов обработчик командлета вызывается для каждого объекта в коллекции по очереди.
В PowerShell, как и в оболочках UNIX/Linux, присутствует конвейер. Он служит для передачи выходных данных одного командлета во входные данные другого. PowerShell включает язык сценариев с динамическими типами, на котором можно реализовывать сложные операции с использованием командлетов. Язык сценариев поддерживает переменные, функции, конструкции ветвления (if-then-else) циклы (while, do, for и foreach), структурированную обработку ошибок и множество других возможностей, включая интеграцию с .NET.
Ant
Apache Ant (англ. ant — муравей и акроним — «Another Neat Tool») — утилита для автоматизации процесса сборки программного продукта. Является платформонезависимой аналогом Ant был создан в рамках проекта Jakarta. Это — самостоятельный проект первого уровня Apache Software Foundation. Первая версия была разработана инженером Sun Microsystems Джеймсом Дэвидсоном (James Davidson).
Управление процессом сборки происходит посредством XML- сценария, также называемого Build-файлом. В первую очередь, этот файл содержит определение проекта, состоящего из отдельных целей (Targets). Цели сравнимы с процедурами в языках программирования и содержат вызовы команд-заданий (Tasks). Каждое задание представляет собой неделимую, атомарную команду, выполняющую некоторое элементарное действие. Между целями могут быть определены зависимости — каждая цель выполняется только после того, как выполнены все цели, от которых она зависит (если они уже были выполнены ранее, повторное выполнение не производится). Типичными примерами целей являются clean (удаление промежуточных файлов), compile (компиляция всех классов), deploy (развёртывание приложения на сервере). Конкретный набор целей и их взаимосвязи зависят от специфики проекта.
Краткий список заданий (команд).
Javac компиляция Java-кода
Copy копирование файлов
Delete удаление файлов и директорий
Move перемещение файлов и директорий
Replace замещение фрагментов текста в файлах
JUnit автоматический запуск юнит-тестов
Exec выполнение внешней команды
Zip создание архива в формате Zip
CVS выполнение CVS-команды
Mail отправка электронной почты
Xslt наложение XSLT-преобразования.
Пример простого сценария сборки приведен ниже.
Первая строка содержит общую информацию о собираемом проекте.
<project name=”simpleCompile” default=”deploy” basedir=”.”>
Самые важные атрибуты элемента project это default (по умолчанию) и basedir (базовая директория). Атрибут default указывает на target (задание), определенное для выполнения по умолчанию.
Ant работает из командной строки, поэтому вполне реально указать только подмножество необходимых задач из всего файла сборки. Например, запустив следующую команду:
% ant -buildfile simple.xml init
Запустив такую команду, обработчик Ant'а выполнит только задание (target) с атрибутом name, которого равно init. Итак, в нашем примере заданием по умолчанию является deploy. Следующий пример команды запуска Ant выполнит именно задание указанное по умолчанию, так как нет указания в командной строке на какое-либо конкретное задание:
% ant -buildfile simple.xml
<target name=”init”>
<target name=”clean” dependens= ”init”>
В общем случае элемент target содержит пять атрибутов: name, if, unless, depends и description. Обязательным атрибутом является name, когда как остальные — необязательные.
Указывая значение атрибута depends, вы можете указать Ant'у, что данное задание зависит от других заданий и не может быть выполнено пока не выполнятся все задания из указанных в атрибуте. В приведенном выше примере, задание clean не запустится до тех пор, пока не завершится задание init. Атрибут depends может включать несколько значений имен заданий через запятую, тем самым указывая, что зависит от нескольких заданий. Атрибуты if и unless дают вам возможность указать задания, которые выполнятся если указанное свойство установлено (в случае if) или наоборот, в случае unless не установлено. Вы можете использовать команду available для установки свойств, как показано в следующем примере, либо в командной строке.
<available classname="org.whatever.Myclass"
property="Myclass.present"/>
Задание init из нашего примера содержит установку четырех свойств вида:
<property name="sourceDir" value="src" />
Очень часто property (свойствам) присваивают часто используемые директории или файлы. Атрибуты элемента property это пары name(имя) и value(значение). Установка свойств позволит логически подвязать необходимые директории или файлы вместо их прямого использования. Если нужно сослаться на свойство с именем sourceDir где-либо позднее в файле, вы можете использовать следующий синтаксис, указывающий Ant'у подставить соответствующее значение установленное в элементе property ранее: ${sourceDir}. Пример:
<javac srcdir="${src.dir}"
destdir="${build.classes}"
classpath="${classpath}"
debug="on"
deprecation="off"
optimize="on">
<include name="**/*.java"/>
<exclude name="**/Script.java"
unless="bsf.present" />
<exclude name="**/version.txt" />
< /javac>
Дата добавления: 2016-07-05; просмотров: 1569;