Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Создание простейшего build-файла




Build-файлы Ant пишутся на языке XML. Каждый build -файл содержит один проект (project) и хотя бы одну цель (target). Цель содержит задачи (tasks). Каждая задача, встречающаяся в build -файле, может иметь id атрибут и может быть позже вызвана по нему. Идентификаторы должны быть уникальными.Используемые теги: Project Тег Project имеет три атрибута:
Атрибут Описание Обязательность
name Имя проекта Нет
default Цель по умолчанию, которая будет использоваться, если явно не указанно, какую цель выполнять Да
basedir Основная директория, из которой будут выходить все пути, использующиеся при работе (если она не указана, то будет использоваться текущая директория, в которой находится build-файл) Нет
Каждый проект содержит одну или несколько целей. Цель представляет собой набор задач, которые необходимо выполнить. При запуске Ant можно выбрать цель, которую(ые) следует выполнить. Если цель не указывать, будет выполнена установленная по умолчанию.

Targets

Цель может зависеть от других целей. Например, имеются две цели: для компиляции и для изъятия файлов с базы данных. Соответственно скомпилировать файлы можно только после того, как они будут извлечены. Ant учитывает такие зависимости.Следует отметить, что depends -атрибут Ant только обозначает порядок,
в котором цели должны быть выполнены. Ant пробует выполнить цели в порядке, соответствующем порядку их появления в атрибуте depends (слева направо).<target name="A"/><target name="B" depends="A"/><target name="C" depends="B"/><target name="D" depends="C,B,A"/>Пусть нужно выполнить цель D. Из её атрибута depends можно узнать, что первой выполнится цель C, затем B и, наконец, A. Неверно: C зависит от B, a B зависит от A, таким образом, первой выполнится цель A, затем B, потом C, а после D.Цель будет исполнена только один раз, даже если более чем одна цель зависит от неё.Цель также имеет возможность быть исполненной только в случае, если определённый параметр (property) был (или не был) установлен. Это позволяет лучше контролировать процесс сборки (например, в зависимости от операционной системы, версии Java и т.д.). Ant только проверяет, установлено ли то либо иное свойство, значение его не важно. Свойство, значением которого является пустая строка, считается заполненным. Например:<target name="build-module-A" if="module-A-present"/><target name="build-own-fake-module-A" unless= "module-A-present"/>Если не установлены if и unless атрибуты, цель будет выполняться всегда.Опциональный атрибут description может быть использован как описание цели и будет выводиться при команде– projecthelp. Target имеет следующие атрибуты:
Атрибут Описание Обязательность
name Имя цели Да
depends Разделённый запятыми список имён целей, от которых эта цель зависит Нет
if Имя параметра, который должен быть установлен, чтобы эта цель выполнялась Нет
unless Имя параметра, который не должен быть установлен, чтобы эта цель выполнялась Нет
description Небольшое описание функции function цели Нет
Имя цели должно состоять только из букв и цифр, включая пустую строку "", "," и пробел.Пример build- файла:

<?xml version='1.0' encoding='ISO-8859-1'?>

<project name="MyProject" default="dist" basedir=".">

<description>

Простой пример build файла

</description>

<!-- установка глобальных параметров -->

<property name="src" location="src"/>

<property name="build" location="build"/>

<property name="dist" location="dist"/>

<target name="init">

<!-- Создать марку времени -->

<tstamp/>

<!-- Создать структуру build директории, которая будет использоваться при компиляции-->

<mkdir dir="${build}"/>

</target>

<target name="compile" depends="init"

description="compile the source " >

<!-- Компиляция java кода из ${src} в ${build} -->

<javac srcdir="${src}" destdir="${build}"/>

</target>

<target name="dist" depends="compile"

description="генерация дистрибутива" >

<!-- создание директории для дистрибутива -->

<mkdir dir="${dist}/lib"/>

 

<!-- Положить всё из ${build} в MyProject-${DSTAMP}.jar файл -->

<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>

</target>

<target name="clean"

description="очищает рабочие каталоги" >

<!-- Delete the ${build} and ${dist} directory trees -->

<delete dir="${build}"/>

<delete dir="${dist}"/>

</target>

</project>

Некоторым целям было дано описание. Это значит, что командой projecthelp будет получен список этих целей с описанием; остальные цели считаются внутренними и не выводятся.

Чтобы всё работало, исходные коды в src поддиректории должны располагаться в соответствии с именами их package.

Пример результата выполнения:

D:\tmp\1>ant

Buildfile: build.xml

init:

[mkdir] Created dir: D:\tmp\1\build

compile:

[javac] Compiling 1 source file to D:\tmp\1\build

dist:

[mkdir] Created dir: D:\tmp\1\dist\lib

[jar] Building jar: D:\tmp\1\dist\lib\MyProject-20070815.jar

BUILD SUCCESSFUL

Total time: 3 seconds

Property

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

<property name=“path” value=“./project”/>

Для обращения к этому свойству в остальных местах нашего файла компоновки можно было бы использовать следующий синтаксис:

${path}

Например:

<property name=“libpath" value="${path}/lib"/>

Ant также позволяет установить переменные в отдельном property-файле. Пример property-файла:

#

# A sample “ant.properties” file

#

month=30 days

year=2004

 

и его использования

<?xml version="1.0"?>

<project name=“test.properties" default="all" >

<property file=“ant.properties"/>

<target name="all" description="Uses properties">

<echo>This month is ${month}</echo>

<echo>This year is ${year}</echo>

</target>

</project>

Шаблоны

Часто является полезным выполнить эти операции с группой файлов сразу, например, со всеми файлами в указанном каталоге с названиями, заканчивающимися на.java, но не начинающимися с EJB. Пример копирования таких файлов:

<copy todir="archive">

<fileset dir="src">

<include name="*.java"/>

<exclude name= "EJB*.java“/>

</fileset>

</copy>

Filter

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

<filterset id="copy.filterset">

<filter token="version" value="1.1"/>

</filterset>

<target name=”copy”>

<copy file="file1.txt" tofile="file2.txt" filtering="true">

<filterset refid="copy.filterset" />

</copy>

</target>

Содержимое исходного текстового файла:

# file.txt

Version is @version@

В результате получаем:

# file.txt

Version is 1.1






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных