Transcript PPS

Slide 1

Java Advanced
Apache Ant


Slide 2

Содержание
СПбГУ ИТМО

1.
2.
3.
4.
5.
6.
7.
8.

Введение
Задания
Цели
Проекты
Свойства
Множества файлов
Пути
Заключение

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

2


Slide 3

Часть 1

Введение


Slide 4

Apache Ant
Язык описания build-файлов
 Основан на XML
 Межплатформенный
 Open Source (Apache License)




Сайт http://ant.apache.org

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

4


Slide 5

Основные понятия


Строительные блоки






Задание
Цель
Проект

Концепции




Свойства
Пути
Множества файлов

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

5


Slide 6

Часть 2

Задания


Slide 7

Задание (task)


Элементарная операция build-файла






Тип задания
Аргументы задания
Задание завершается успешно либо
неуспешно

Примеры




Откомпилировать все .java файлы в каталоге
sources и поместить результат в каталог
classes
Упаковать классы из каталога classes в .jar
файл

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

7


Slide 8

Описание заданий


Задание задается XML-элементом





Тип задания – имя элемента
Аргументы задания – атрибуты элемента и
вложенные элементы

Пример задания




output="dir.txt">

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

8


Slide 9

Компиляция
Задание javac – компилирует исходный
код на Java
 Атрибуты










srcdir
– каталог с исходными кодами
destdir
– каталог для .class файлов
includes? – какие файлы компилировать
excludes? – какие файлы не компилировать
classpath – classpath для компилятора

Пример


Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

9


Slide 10

Применение includes и excludes


Атрибут includes





Атрибут excludes





Список масок файлов, которые включаются в
множество
По умолчанию – все файлы
Список масок файлов, которые НЕ включаются
в множество
По умолчанию – пустое множество

Excludes имеет приоритет

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

10


Slide 11

Маски файлов


Специальные символы


?
*



**





– любой символ имени
– любая последовательность символов
имени
– любой каталог

Примеры


Все .java файлы в текущем каталоге
*.java



Все .java файлы в текущем каталоге и
подкаталогах
**/*.java

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

11


Slide 12

Создание архивов



Задания jar/zip – создают .jar/.zip файлы
Атрибуты







destfile – имя файла архива
basedir – корневой каталог архива
update? – обновлять/перезаписывать
includes/excludes

Примеры



includes="**/*.class"/>
includes="**/*.jpg"/>

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

12


Slide 13

Генерация JavaDoc
Задание javadoc – компилирует JavaDoc
документацию
 Атрибуты








sourcepath
– где брать исходники
destdir
– куда сохранять документацию
packagenames – имена пакетов

Пример
packagenames= "api.* "/>

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

13


Slide 14

Запуск java-программ



Задание java
Атрибуты



classname – имя основного класса
classpath – classpath



input?
 output?



– имя файла для stdin
– имя файла для stdout

Вложенные элементы: arg
Пример
classpath="classes.jar“>

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

14


Slide 15

Аргументы командной строки



Элемент arg
Атрибуты







value?
file?
path?
line?

– значение аргумента
– имя файла
– путь
– аргумента разделенные пробелами

Примеры








Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

15


Slide 16

Запуск программ



Задача exec – запускает произвольную
программу
Атрибуты








executable
dir?
input?
output?

– имя исполняемого файла
– имя рабочего каталога
– имя файла для stdin
– имя файла для stdout

Вложенные элементы: arg
Пример
output="dir.txt">


Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

16


Slide 17

Часть 3

Цели


Slide 18

Цель (target)


Набор заданий, исполняемых
последовательно


Зависимости между целями





Условное выполнение




Компиляция одного модуля зависит от другого
Упаковка производится после компиляции и т.п.

Выполнение не всех действий

Успешное / неуспешное завершение

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

18


Slide 19

Описание целей



Описываются XML-элементом target
Атрибуты





name
description?

– имя цели
– описание цели

Пример
description="Строит приложение">




Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

19


Slide 20

Зависимости между целями




Атрибут depends – список целей, от
которых зависит данная, разделенных
запятыми
Примеры



depends="build-module-A, build-module-B">
...


Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

20


Slide 21

Условное выполнение




Атрибут if – цель выполняется если указанное
свойство установлено
Атрибут unless – цель выполняется если
указанное свойство НЕ установлено
Пример
if="module-A-present">
unless="module-A-present">
depends="build-module-C-from-A, build-module-C-fromscratch">

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

21


Slide 22

Часть 4

Проекты


Slide 23

Проект



Набор целей и задач
При запуске




выполняются все задачи
выполняется одна или несколько целей
Успешное / неуспешное завершение

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

23


Slide 24

Описание проекта



Описываются XML-элементом project
Атрибуты






name?
default?
basedir?

– имя проекта
– имя цели по умолчанию
– базовая директория

Пример
basedir=".">
...


Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

24


Slide 25

Запуск Ant


Из командной строки




ant <опции> <цели>

Из Java



java org.apache.tools.ant.Main [опции] [цели]
java org.apache.tools.ant.launch.Launcher
[опции] [цели]

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

25


Slide 26

Опции Ant
Основные опции
-lib
Где искать библиотеки
-buildfile
имя build-файла
-noclasspath Игнорировать classpath
Информация об Ant
-help
Помощь по опциям
-version
Версия Ant
Выводимая информация
-quiet
Мало информации
-verbose
Много информации
-debug
Отладочная информация
Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

26


Slide 27

Организация build-файла



Основной файл – обычно build.xml
Вспомогательные файлы подключаются
элементом import



Атрибут file
Атрибут optional

Georgiy Korneev

– имя файла
– обязателен ли

Java Advanced / Описание и проверка структуры XML

27


Slide 28

Часть 5

Свойства


Slide 29

Свойства




Набор пар имя-значение
Свойства могут использоваться в
атрибутах-аргументах задач
Пример использования свойств
srcdir="${project.dir}/sources"
destdir=" ${project.dir}/classes"
/>

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

29


Slide 30

Встроенные свойства
Свойства задаваемые Ant
basedir

Полный путь к базовой директории проекта

ant.file

Полный путь к build-файлу

ant.version

Полный

project.name

Имя проекта

ant.java.version

Версия Java
Свойства задаваемые Java

java.home

Путь к директории Java

java.class.path

Classpath

os.name

Название операционной системы

os.version

Версия операционной системы

user.home

Домашний каталог пользователя

user.dir

Текущий каталог

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

30


Slide 31

Установка свойств



Задание property устанавливает значение
свойства
Атрибуты






name
value?
location?

– имя свойства
– значение свойства
– путь к файлу или каталогу

Примеры






location="${project.dir}/source"/>

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

31


Slide 32

Загрузка свойств



Задание property загружает свойства из
.property файла
Атрибуты






file?
url?
resource?

– путь к файлу
– URL файла
– путь к ресурсу

Примеры






resource="resources/project.properties"/>

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

32


Slide 33

Пример .property-файла
build.compiler=jikes
deploy.server=lucky
deploy.port=8080
deploy.url=http://${deploy.server}:${deploy.port}/

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

33


Slide 34

Проверка наличия файла



Задание available устанавливает свойство
если файл/ресурс доступен
Атрибуты









property
file?
resource?
type?
value?

– имя свойства
– имя файла
– имя ресурса
– тип (file или dir)
– устанавливаемое значение

Пример


file="lib/module-a.jar"/>

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

34


Slide 35

Задание tstamp
Задание tstamp Устанавливает свойства
переменные DSTAMP и TSTAMP и время
запуска для других программ
 Установленные значения применяются
другими заданиями
 Пример tstamp


Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

35


Slide 36

Проверка изменения файлов
Задание uptodate устанавливает свойство
если файл/ресурс доступен
 Атрибуты









property
srcfile
targetfile
value?

– имя свойства
– имя проверяемого файла
– имя файла с которым сравнивают
– устанавливаемое значение

Пример


srcfile="ModuleA.java" targetfile="module-a.jar"/>

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

36


Slide 37

Часть 6

Наборы файлов


Slide 38

Наборы файлов


– набор файлов






dir – базовый каталог
file – множество из одного файла
includes / excludes – маски включения /
исключения файлов
– наборы шаблонов
Вложенные наборы файлов

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

38


Slide 39

Наборы шаблонов


– набор шаблонов



includes / excludes – маски включения /
исключения
if / unless – работа в зависимости от значений
свойств

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

39


Slide 40

Наборы каталогов


– набор каталогов






dir – базовый каталог
file – множество из одного файла
includes / excludes – маски включения /
исключения файлов
– наборы шаблонов
Вложенные наборы каталогов

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

40


Slide 41

Список файлов


– набор каталогов






dir – базовый каталог
files – список имен файлов
– имена файлов

Наличие файлов не проверяются

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

41


Slide 42

Часть 7

Пути


Slide 43

Наборы путей


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




Части разделяются : или ;

Структурное описание




-- Набор путей
-- Java classpath

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

43


Slide 44

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


Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

44


Slide 45

Пример задания пути








Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

45


Slide 46

Именованные пути


Создание именованного пути




...

Ссылка на именованный путь






Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

46


Slide 47

Пример. Именованные пути











Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

47


Slide 48

Часть 8

Заключение


Slide 49

Ссылки
 Ant



Homepage // http://ant.apache.org

Ant Manual //
http://ant.apache.org/manual/index.html
Overview of Ant tasks //
http://ant.apache.org/manual/tasksoverview.ht
ml

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

49


Slide 50

Вопросы
СПбГУ ИТМО

Georgiy Korneev

Java Advanced / Описание и проверка структуры XML

50