cистемы автоматической сборки проектов (Полина...

19
СИСТЕМЫ АВТОМАТИЧЕСКОЙ СБОРКИ ПРОЕКТОВ Фоминых П.М.

Upload: -

Post on 19-Jul-2015

129 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Cистемы автоматической сборки проектов (Полина Фоминых)

СИСТЕМЫ АВТОМАТИЧЕСКОЙ

СБОРКИ ПРОЕКТОВ

Фоминых П.М.

Page 2: Cистемы автоматической сборки проектов (Полина Фоминых)

Сборка проекта – это компиляция исходного кода в исполняемый код.

Ресурсы:

• Библиотеки, используемые в проекте, их версии;

• Другие ресурсы, необходимые для сборки/запуска проекта;

• Запуск тестов;

Page 3: Cистемы автоматической сборки проектов (Полина Фоминых)

Ручная сборка

Минусы:

• «Человеческий фактор»

• Монотонный характер работы

• Большие временные затраты

Page 4: Cистемы автоматической сборки проектов (Полина Фоминых)

Автоматическая сборка проектовРеализует метод Continuous Integration.

Преимущества:

• быстрое обнаружение ошибок;

• экономия времени на хозяйственных операциях:

• оперативный доступ к последним изменениям в проекте;

• Наличие работоспособной версии кода проекта

• История сборок и релизов

Page 5: Cистемы автоматической сборки проектов (Полина Фоминых)

• Ant.1

• Maven2

Инструменты для автоматической сборки проектов:

Page 6: Cистемы автоматической сборки проектов (Полина Фоминых)

Ant• наличие на системе установленной рабочей

среды Java

• Описывается в формате XML

• Позволяет определить версионность продукта

• Облегчается процесс создания сборок проекта

• Является одним из составляющих документирования проекта

• Помогает в разворачивании серверных приложений

• Ant строит граф зависимостей, что позволяет избежать исполнения ненужных целей.

• Переносимость сценариев

• Императивная сборка проекта

Page 7: Cистемы автоматической сборки проектов (Полина Фоминых)

Build файл• TargetsЦели сравнимы с процедурами в языках программирования и содержат вызовы команд-заданий

• TasksКаждое задание представляет собой неделимую, атомарную команду, выполняющую некоторое элементарное действие.

Примеры:

Clean

Compile

Deploy

Page 8: Cистемы автоматической сборки проектов (Полина Фоминых)

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>

Page 9: Cистемы автоматической сборки проектов (Полина Фоминых)

Ant, недостатки:• Низкоуровневость

• процесс настройки сборки разных редакций продукта достаточно трудоемок и основывается на применении переменных сборки.

Page 10: Cистемы автоматической сборки проектов (Полина Фоминых)

Maven

Основные преимущества Maven• Независимость от OS.• Управление зависимостями.• Возможна сборка из командной строки. Такое

часто необходимо для автоматической сборки проекта на сервере (Continuous Integration).

• Хорошая интеграция со средами разработки. Основные среды разработки на javaлегко открывают проекты которые собираются c помощью maven. Как следствие - если с проектом работают в разных средах разработки, то mavenудобный способ хранения настроек.

• Декларативное описание проекта.

Page 11: Cистемы автоматической сборки проектов (Полина Фоминых)

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>

Page 12: Cистемы автоматической сборки проектов (Полина Фоминых)

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>

• Архетип — это некая стандартная компоновка файлов и каталогов в проектах различного рода .

Page 13: Cистемы автоматической сборки проектов (Полина Фоминых)

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>

Page 14: Cистемы автоматической сборки проектов (Полина Фоминых)

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>

Page 15: Cистемы автоматической сборки проектов (Полина Фоминых)

Maven: жизненый цикл

• Compile - Компилирование проекта

• Test - Тестирование с помощью JUnit тестов

• Package - Создание .jar файла или war, ear в зависимости от типа проекта

• integration-test - Запуск интеграционных тестов

• Install - Копирование .jar (war , ear) в локальный репозиторий

• Deploy - публикация файла в удалённый репозиторий

Дополнительные фазы:

• Clean - удаление всех созданных в процессе сборки артефактов: .class, .jar и др. файлов. В простейшем случае результат — просто удаление каталога target

• Site - предназначена для создания документации (javadoc+сайт описания проекта)

Page 16: Cистемы автоматической сборки проектов (Полина Фоминых)

Maven and Continuous Integration

В результате достигается:

• раннее обнаружение ошибок

• автоматизация рутинных операций

• как результат - экономия времени и повышение качества кода.

Page 17: Cистемы автоматической сборки проектов (Полина Фоминых)

Maven, недостатки:

• К недостаткам maven следует отнести его большую сложность и дополнительное время для изучения если вы ещё не знаете Maven.

• Есть opensource библиотеки, которые собираются не Maven'ом, и они попадают в центральный репозиторий обычно позже, чем выйдет официальный релиз. Тут можно либо подождать, когда они всё-таки попадут в центральный репозиторий, либо добавить их вручную в локальный.

Page 18: Cистемы автоматической сборки проектов (Полина Фоминых)

Maven VS Ant

• в отличии от Ant, Maven хорошо интегрируется со всеми основными средами разработки.

• сборка проекта происходит совсем без IDE.

• Управление зависимостями

Page 19: Cистемы автоматической сборки проектов (Полина Фоминых)

ВОПРОСЫ?