Cистемы автоматической сборки проектов (Полина...
-
Upload
- -
Category
Technology
-
view
129 -
download
2
Transcript of Cистемы автоматической сборки проектов (Полина...
![Page 1: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/1.jpg)
СИСТЕМЫ АВТОМАТИЧЕСКОЙ
СБОРКИ ПРОЕКТОВ
Фоминых П.М.
![Page 2: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/2.jpg)
Сборка проекта – это компиляция исходного кода в исполняемый код.
Ресурсы:
• Библиотеки, используемые в проекте, их версии;
• Другие ресурсы, необходимые для сборки/запуска проекта;
• Запуск тестов;
![Page 3: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/3.jpg)
Ручная сборка
Минусы:
• «Человеческий фактор»
• Монотонный характер работы
• Большие временные затраты
![Page 4: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/4.jpg)
Автоматическая сборка проектовРеализует метод Continuous Integration.
Преимущества:
• быстрое обнаружение ошибок;
• экономия времени на хозяйственных операциях:
• оперативный доступ к последним изменениям в проекте;
• Наличие работоспособной версии кода проекта
• История сборок и релизов
![Page 5: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/5.jpg)
• Ant.1
• Maven2
Инструменты для автоматической сборки проектов:
![Page 6: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/6.jpg)
Ant• наличие на системе установленной рабочей
среды Java
• Описывается в формате XML
• Позволяет определить версионность продукта
• Облегчается процесс создания сборок проекта
• Является одним из составляющих документирования проекта
• Помогает в разворачивании серверных приложений
• Ant строит граф зависимостей, что позволяет избежать исполнения ненужных целей.
• Переносимость сценариев
• Императивная сборка проекта
![Page 7: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/7.jpg)
Build файл• TargetsЦели сравнимы с процедурами в языках программирования и содержат вызовы команд-заданий
• TasksКаждое задание представляет собой неделимую, атомарную команду, выполняющую некоторое элементарное действие.
Примеры:
Clean
Compile
Deploy
![Page 8: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/8.jpg)
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истемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/9.jpg)
Ant, недостатки:• Низкоуровневость
• процесс настройки сборки разных редакций продукта достаточно трудоемок и основывается на применении переменных сборки.
![Page 10: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/10.jpg)
Maven
Основные преимущества Maven• Независимость от OS.• Управление зависимостями.• Возможна сборка из командной строки. Такое
часто необходимо для автоматической сборки проекта на сервере (Continuous Integration).
• Хорошая интеграция со средами разработки. Основные среды разработки на javaлегко открывают проекты которые собираются c помощью maven. Как следствие - если с проектом работают в разных средах разработки, то mavenудобный способ хранения настроек.
• Декларативное описание проекта.
![Page 11: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/11.jpg)
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истемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/12.jpg)
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истемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/13.jpg)
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истемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/14.jpg)
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истемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/15.jpg)
Maven: жизненый цикл
• Compile - Компилирование проекта
• Test - Тестирование с помощью JUnit тестов
• Package - Создание .jar файла или war, ear в зависимости от типа проекта
• integration-test - Запуск интеграционных тестов
• Install - Копирование .jar (war , ear) в локальный репозиторий
• Deploy - публикация файла в удалённый репозиторий
Дополнительные фазы:
• Clean - удаление всех созданных в процессе сборки артефактов: .class, .jar и др. файлов. В простейшем случае результат — просто удаление каталога target
• Site - предназначена для создания документации (javadoc+сайт описания проекта)
![Page 16: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/16.jpg)
Maven and Continuous Integration
В результате достигается:
• раннее обнаружение ошибок
• автоматизация рутинных операций
• как результат - экономия времени и повышение качества кода.
![Page 17: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/17.jpg)
Maven, недостатки:
• К недостаткам maven следует отнести его большую сложность и дополнительное время для изучения если вы ещё не знаете Maven.
• Есть opensource библиотеки, которые собираются не Maven'ом, и они попадают в центральный репозиторий обычно позже, чем выйдет официальный релиз. Тут можно либо подождать, когда они всё-таки попадут в центральный репозиторий, либо добавить их вручную в локальный.
![Page 18: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/18.jpg)
Maven VS Ant
• в отличии от Ant, Maven хорошо интегрируется со всеми основными средами разработки.
• сборка проекта происходит совсем без IDE.
• Управление зависимостями
![Page 19: Cистемы автоматической сборки проектов (Полина Фоминых)](https://reader034.fdocument.pub/reader034/viewer/2022042701/55aaea611a28abf0778b4783/html5/thumbnails/19.jpg)
ВОПРОСЫ?