cистемы автоматической сборки проектов (Полина...
TRANSCRIPT
СИСТЕМЫ АВТОМАТИЧЕСКОЙ
СБОРКИ ПРОЕКТОВ
Фоминых П.М.
Сборка проекта – это компиляция исходного кода в исполняемый код.
Ресурсы:
• Библиотеки, используемые в проекте, их версии;
• Другие ресурсы, необходимые для сборки/запуска проекта;
• Запуск тестов;
Ручная сборка
Минусы:
• «Человеческий фактор»
• Монотонный характер работы
• Большие временные затраты
Автоматическая сборка проектовРеализует метод Continuous Integration.
Преимущества:
• быстрое обнаружение ошибок;
• экономия времени на хозяйственных операциях:
• оперативный доступ к последним изменениям в проекте;
• Наличие работоспособной версии кода проекта
• История сборок и релизов
• Ant.1
• Maven2
Инструменты для автоматической сборки проектов:
Ant• наличие на системе установленной рабочей
среды Java
• Описывается в формате XML
• Позволяет определить версионность продукта
• Облегчается процесс создания сборок проекта
• Является одним из составляющих документирования проекта
• Помогает в разворачивании серверных приложений
• Ant строит граф зависимостей, что позволяет избежать исполнения ненужных целей.
• Переносимость сценариев
• Императивная сборка проекта
Build файл• TargetsЦели сравнимы с процедурами в языках программирования и содержат вызовы команд-заданий
• TasksКаждое задание представляет собой неделимую, атомарную команду, выполняющую некоторое элементарное действие.
Примеры:
Clean
Compile
Deploy
Build файл<?xml version="1.0"?>
<project default="build" basedir=".">
<property name="dir.build" value="../.build"/>
<property name="dir.classes" value="${dir.build}/classes"/>
…
<!-- Сборка приложения -->
<target name="build" depends="clean" description="Builds the application">
…
<!-- Создание директорий -->
<!-- Компиляция исходных файлов -->
<!-- Копирование необходимых файлов -->
<!-- Создание JAR-файла -->
…
</target>
<!-- Очистка -->
<target name="clean" description="Removes all temporary files">
<!-- Удаление файлов -->
<delete dir="${dir.build}"/>
</target>
</project>
Ant, недостатки:• Низкоуровневость
• процесс настройки сборки разных редакций продукта достаточно трудоемок и основывается на применении переменных сборки.
Maven
Основные преимущества Maven• Независимость от OS.• Управление зависимостями.• Возможна сборка из командной строки. Такое
часто необходимо для автоматической сборки проекта на сервере (Continuous Integration).
• Хорошая интеграция со средами разработки. Основные среды разработки на javaлегко открывают проекты которые собираются c помощью maven. Как следствие - если с проектом работают в разных средах разработки, то mavenудобный способ хранения настроек.
• Декларативное описание проекта.
Maven: pom.xml (POM – Project Object Model)
• артефакт— это, по сути, любая библиотека, хранящаяся в репозитории, пример: org.springframework.spring:2.5.5
• Плагины - используются самим Maven'ом при сборке проекта. Maven плагины позволяют задать дополнительные действия, которые будут выполняться при сборке.<plugin>
<groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.1</version><configuration>
<fork>false</fork> <server>test-server</server> <url>http://test-server/manager</url>
</configuration></plugin>
Maven: pom.xml (POM – Project Object Model)
• Зависимости — это те библиотеки, которые непосредственно используются в вашем проекте для компиляции кода или его тестирования. Объявление зависимостей заключено в тэг <dependencies>.<dependencies>
<dependency> <groupId>junit</groupId>
<artifactId>junit</artifactId><version>4.4</version> <scope>test</scope>
</dependency></dependencies>
• Архетип — это некая стандартная компоновка файлов и каталогов в проектах различного рода .
Maven: pom.xml (POM – Project Object Model)
• Профили<profiles>
<profile> <id>development</id><properties>
<database.url>jdbc:hsqldb:mem:testdb</database.url></properties> <dependencies>
<dependency> <groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId> <version>2.0.0</version>
</dependency></dependencies>
</profile>…
</profiles>
Maven: pom.xml (POM – Project Object Model)
• Активация профайла вручную в командной строке запуска maven, например:
mvn package -P production
при объявлении самого профайла можно задать тэг <activation>
Активные профайлы можно также задать в ~/.m2/settings.xml<settings>
...
<profiles>
<profile>
<id>appserverConfig</id>
…
</profile>
</profiles>
<activeProfiles>
<activeProfile>appserverConfig</activeProfile>
</activeProfiles>
...
</settings>
Maven: жизненый цикл
• Compile - Компилирование проекта
• Test - Тестирование с помощью JUnit тестов
• Package - Создание .jar файла или war, ear в зависимости от типа проекта
• integration-test - Запуск интеграционных тестов
• Install - Копирование .jar (war , ear) в локальный репозиторий
• Deploy - публикация файла в удалённый репозиторий
Дополнительные фазы:
• Clean - удаление всех созданных в процессе сборки артефактов: .class, .jar и др. файлов. В простейшем случае результат — просто удаление каталога target
• Site - предназначена для создания документации (javadoc+сайт описания проекта)
Maven and Continuous Integration
В результате достигается:
• раннее обнаружение ошибок
• автоматизация рутинных операций
• как результат - экономия времени и повышение качества кода.
Maven, недостатки:
• К недостаткам maven следует отнести его большую сложность и дополнительное время для изучения если вы ещё не знаете Maven.
• Есть opensource библиотеки, которые собираются не Maven'ом, и они попадают в центральный репозиторий обычно позже, чем выйдет официальный релиз. Тут можно либо подождать, когда они всё-таки попадут в центральный репозиторий, либо добавить их вручную в локальный.
Maven VS Ant
• в отличии от Ant, Maven хорошо интегрируется со всеми основными средами разработки.
• сборка проекта происходит совсем без IDE.
• Управление зависимостями
ВОПРОСЫ?