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
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-элементом
Тип задания – имя элемента
Аргументы задания – атрибуты элемента и
вложенные элементы
Пример задания
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
Примеры
Georgiy Korneev
Java Advanced / Описание и проверка структуры XML
12
Slide 13
Генерация JavaDoc
Задание javadoc – компилирует JavaDoc
документацию
Атрибуты
sourcepath
– где брать исходники
destdir
– куда сохранять документацию
packagenames – имена пакетов
Пример
Georgiy Korneev
Java Advanced / Описание и проверка структуры XML
13
Slide 14
Запуск java-программ
Задание java
Атрибуты
classname – имя основного класса
classpath – classpath
input?
output?
– имя файла для stdin
– имя файла для stdout
Вложенные элементы: arg
Пример
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
Пример
Georgiy Korneev
Java Advanced / Описание и проверка структуры XML
16
Slide 17
Часть 3
Цели
Slide 18
Цель (target)
Набор заданий, исполняемых
последовательно
Зависимости между целями
Условное выполнение
Компиляция одного модуля зависит от другого
Упаковка производится после компиляции и т.п.
Выполнение не всех действий
Успешное / неуспешное завершение
Georgiy Korneev
Java Advanced / Описание и проверка структуры XML
18
Slide 19
Описание целей
Описываются XML-элементом target
Атрибуты
name
description?
– имя цели
– описание цели
Пример
Georgiy Korneev
Java Advanced / Описание и проверка структуры XML
19
Slide 20
Зависимости между целями
Атрибут depends – список целей, от
которых зависит данная, разделенных
запятыми
Примеры
...
Georgiy Korneev
Java Advanced / Описание и проверка структуры XML
20
Slide 21
Условное выполнение
Атрибут if – цель выполняется если указанное
свойство установлено
Атрибут unless – цель выполняется если
указанное свойство НЕ установлено
Пример
Georgiy Korneev
Java Advanced / Описание и проверка структуры XML
21
Slide 22
Часть 4
Проекты
Slide 23
Проект
Набор целей и задач
При запуске
выполняются все задачи
выполняется одна или несколько целей
Успешное / неуспешное завершение
Georgiy Korneev
Java Advanced / Описание и проверка структуры XML
23
Slide 24
Описание проекта
Описываются XML-элементом project
Атрибуты
name?
default?
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
Свойства
Набор пар имя-значение
Свойства могут использоваться в
атрибутах-аргументах задач
Пример использования свойств
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?
– имя свойства
– значение свойства
– путь к файлу или каталогу
Примеры
Georgiy Korneev
Java Advanced / Описание и проверка структуры XML
31
Slide 32
Загрузка свойств
Задание property загружает свойства из
.property файла
Атрибуты
file?
url?
resource?
– путь к файлу
– URL файла
– путь к ресурсу
Примеры
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)
– устанавливаемое значение
Пример
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?
– имя свойства
– имя проверяемого файла
– имя файла с которым сравнивают
– устанавливаемое значение
Пример
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
Наборы путей
Строковое описание
Части разделяются : или ;
Структурное описание
-- Набор путей
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