l6_NC
.pdfMake
• «Классическая» утилита для сборки проектов
PACKAGE |
= |
package |
VERSION |
= |
` date "+%Y.%m%d%" ` |
RELEASE_DIR |
= .. |
|
RELEASE_FILE = |
$(PACKAGE)-$(VERSION) |
#target: all - Default target. Does nothing. all:
echo "Hello $(LOGNAME), nothing to do by default"
#target: dist - Make a release.
dist:
tar -cf $(RELEASE_DIR)/$(RELEASE_FILE) && \ gzip -9 $(RELEASE_DIR)/$(RELEASE_FILE).tar
make dist
© 2013 NetCracker Technology Corporation Confidential |
21 |
ANT
•Apache Ant утилита для автоматизации процесса сборки программного продукта. Является платформонезависимым аналогом утилиты make (в качестве «Makefile» применяется «build.xml»).
© 2013 NetCracker Technology Corporation Confidential |
22 |
Ant: пример
build.xml
<?xml version="1.0"?>
<project name="Hello"default="compile"> <target name="compile"
description="compile the Java source code to class files"> <mkdir dir="classes"/>
<javac srcdir="."destdir="classes"/> </target>
<target name="jar"depends="compile"
description="create a Jar file for the application"> <jar destfile="hello.jar">
<fileset dir="classes"includes="**/*.class"/> <manifest>
<attribute name="Main-Class"value="HelloProgram"/> </manifest>
</jar>
</target>
</project>
Запуск - ant target_name
© 2013 NetCracker Technology Corporation Confidential |
23 |
Пример комманд
Код |
Действие |
Javac |
компиляция Java-кода |
Copy |
копирование файлов |
Delete |
удаление файлов и директорий |
Move |
перемещение файлов и директорий |
Replace |
замещение фрагментов текста в файлах |
JUnit |
автоматический запуск юнит-тестов |
Exec |
выполнение внешней команды |
Zip |
создание архива в формате Zip |
CVS |
выполнение CVS-команды |
отправка электронной почты |
|
Xslt |
наложение XSLT-преобразования |
© 2013 NetCracker Technology Corporation Confidential |
24 |
Пример Eclipse
© 2013 NetCracker Technology Corporation Confidential |
25 |
КДПВ
«Лучше день потерять, но за пять минут долететь»
© 2013 NetCracker Technology Corporation Confidential |
26 |
MAVEN
MAVEN инструмент для управления программными проектами (software project management tool). В реальности MAVEN — это система для управления сборкой проекта, по целям во многом схожая с инструментами типа Ant и make.
Отличительные особенности MAVEN таковы:
•Примат соглашений над конфигурацией (convention over configuration).
•Если проект следует некоторым стандартам, то Мавен сам поймет, что и как надо сделать, чтобы собрать проект. В описании проекта указывается только то, что отличается от стандарта (например, нестандартная структура директорий).
•Управление зависимостями (dependency management)
•Если для сборки (или для исполнения) проекта требуются некоторые дополнительные библиотеки, их достаточно указать в описании проекта — Мавен сам их скачает, разберется с тем, какая нужна версия, а если эти библиотеки, в свою очередь, зависят от других библиотек, то Мавен скачает и их, и так далее. Для этого Мавен использует удаленные хранилища (репозитории, repositories), в которых хранятся библиотеки и их описания.
•Описательный язык.
•В отличие от других аналогичных инструментов, Мавен использует именно описание проекта, которое называется Объектная Модель Проекта (Project Object Model), сокращенно POM. В модели не указывается, что, как и когда должно быть выполнено для сборки проекта; вместо этого там описывается то, как проект устроен, от чего он зависит и так далее. Предполагается, что Мавен самостоятельно разберется с тем, как на основании этой информации собрать проект.
•Жесткая схема последовательности сборки.
•Мавен предполагает, что сборки всех проектов укладываются в несколько типов последовательностей сборки (в терминологии Мавена «жизненных циклов», lifecycles). Последовательность состоит из определенных фаз (обработка ресурсов, компиляция, тесты, упаковка, установка...), которые проект проходит в жестко заданном порядке. В модели проекта указывается специфические детали того, что именно должно быть сделано в ту или иную фазу («при компиляции использовать вот такие опции компилятора...»).
© 2013 NetCracker Technology Corporation Confidential |
27 |
Литература по Ant
•http://habrahabr.ru/post/99394/
•http://www.artlebedev.ru/tools/technogrette/soft/eclipse-ant/
© 2013 NetCracker Technology Corporation Confidential |
28 |
Maven: жизненный цикл
•validate — проверяет корректность метаинформации о проекте
•compile — компилирует исходники
•test — прогоняет тесты классов из предыдущего шага
•package — упаковывает скомпилированые классы в удобноперемещаемый формат (jar или war, к примеру)
•integration-test — отправляет упаковынные классы в среду интеграционного тестирования и прогоняет тесты
•verify — проверяет корректность пакета и удовлетворение требованиям качества
•install — загоняет пакет в локальный репозиторий, откуда он (пекет) будет доступен для использования как зависимость в других проектах
•deploy — отправляет пакет на удаленный production сервер, откуда другие разработчики его могут получить и использовать
© 2013 NetCracker Technology Corporation Confidential |
29 |
Дополнительная литература
•По MAVEN
•http://habrahabr.ru/post/102181/
•http://habrahabr.ru/post/77333/
•http://skipy-ru.livejournal.com/5517.html
•По авто-сборке
•http://www.quizful.net/post/automated-builds-java
•Гудлиф. Глава 10 «Код, который построил Джек»
© 2013 NetCracker Technology Corporation Confidential |
30 |