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

Post on 19-Jul-2015

129 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

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.

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

ВОПРОСЫ?

top related