Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
СИСТЕМЫ АВТОМАТИЧЕСКОЙ
СБОРКИ ПРОЕКТОВ
Фоминых П.М.
Сборка проекта – это компиляция исходного
кода в исполняемый код.
Ресурсы:
• Библиотеки, используемые в проекте, их
версии;
• Другие ресурсы, необходимые для
сборки/запуска проекта;
• Запуск тестов;
Ручная сборка
Минусы:
• «Человеческий фактор»
• Монотонный характер работы
• Большие временные затраты
Автоматическая сборка проектов
Реализует метод 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.
• Управление зависимостями
ВОПРОСЫ?

More Related Content

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

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