Задача выделения объекта на изображении: хаотично-фазовая синхронизация и аси...
Software engineering seminars: gradle
1. Технологии разработки программного обеспечения
(практика)
Мартынов Семён, Хозяинов Иван
Санкт-Петербургского политехнического университета Петра Великого
Института компьютерных наук и технологий
Кафедра компьютерных систем и программных технологий
18 ноября 2017 г.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 1 / 23
2. Содержание
1 Итоги прошлого семинара
Итоги теста
Тестирование
2 CPP-world
Makefile
CMake
Ninja
3 Java-world
Apache Ant
Apache Maven
Gradle Build Tool
4 Заключение
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 2 / 23
3. Итоги теста
Всего сдано работ: 22 (-1)
Сколько сказали, что сделали ДЗ: 12.5 человек
Уровень владения git: A22 = 3.95, Var = 2.04
Отличия Docker от VirtualBox и LXC: 9 ответов можно развивать
Задача на поиск повторов: 14 решений нормальные
Деплой приложения с MongoDB: 4 человека на побоялись написать
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 3 / 23
4. Тестирование
ФИО, Группа?
Сделал(а) ли я ДЗ?
Как я оцениваю свой уровень владения makefile?
В какой ситуации использование svn может быть более
предпочтительно, чем git?
Написать программу, которая будет вычислять сумму чисел нацело
делящихся на введённое пользователем число. Цикл задать от 0 до
введенного с клавиатуры числа.
Вход: 5 200
Выход: 4100
Как разрешить конфликт слияния в git?
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 4 / 23
5. Разбор ДЗ
Вопросы?
Нет чёткой постановки задачи?
Нет чёткого дедлайна?
Работу могут украсть?
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 5 / 23
6. Makefile
Стюарт Фельдман (Stuart Feldman), 1977 год (Bell Labs);
Президент ACM, 2006 – 2008.
Синтаксис makefile
цель1 цель2 ...: реквизит1 реквизит2 ...
команда1
команда2
...
Цели
all
clean
install/uninstall
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 6 / 23
8. CMake
CMake – кроссплатформенная система сборки проектов.
Используют:
cURL
LLVM and Clang
Mir
MiKTeX
MySQL and MariaDB
OGRE
Qt (*)
ReactOS
Synergy
zlib
ZeroMQ
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 8 / 23
13. The Ninja build system
Эван Мартин (Evan Martin), 2012 год (Google).
Распределённая система сборки, используется для Google Chrome.
Пример cmake
cc = clang
cflags = -Weverything
rule compile
command = $cc $cflags -c $in -o $out
rule link
command = $cc $in -o $out
build hello.o: compile hello.c
build hello: link hello.o
default hello
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 13 / 23
15. Apache Ant
Apache Ant (Another Neat Tool) – платформонезависимая утилита для
автоматизации процесса сборки программного продукта (аналог make).
Всего имеет около 150 команд, основные:
echo – вывод сообщений в консоль
mkdir – создание директорий
delete – удаление файлов и директорий
javac – компиляция Java–кода
java – запуск class и jar файлов
jar – создание jar файлаМартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 15 / 23
16. Apache Ant
Пример buil.xml
<?xml version="1.0"?>
<project name="HelloWorld" default="run">
<target name="compile">
<mkdir dir="build/classes"/>
<javac destdir="build/classes" includeantruntime="false
<src path="src"/>
</javac>
</target>
<target name="run" depends="compile">
<java classname="HelloWorld" classpath="build/classes"/
</target>
<target name="clean">
<delete dir="build"/>
</target>
</project>
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 16 / 23
17. Apache Maven
Apache Maven (коллекционер знаний) – фреймворк для
автоматизации сборки.
Maven принёс в разработку:
автоматическое управление зависимостями
единый формат описания артефактов (POM)
управление результатами сборки
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 17 / 23
18. Apache Maven
Жизненный цикл:
validate – проверяет корректность метаинформации о проекте
compile – компилирует исходники
test – прогоняет тесты классов из предыдущего шага
package – упаковывает скомпилированные классы в jar
integration-test – отправляет упакованные классы в среду
интеграционного тестирования
verify – проверяет корректность пакета и удовлетворение
требованиям качества
install – отправляет пакет в локальный репозиторий,
deploy – отправляет пакет на удаленный production сервер
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 18 / 23
19. Apache Maven
Пример pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
<modelVersion>4.0.0</modelVersion>
<groupId>ru.spbstu.icc.kspt</groupId>
<artifactId>my-project</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 19 / 23
20. Gradle Build Tool
Gradle – система автоматической сборки, позволяющая использовать
сценарии на языке Groovy.
Позволяет изменять порядок этапов жизненного цикла на основе DAG.
Поддерживает инкрементальные сборки.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 20 / 23
21. Gradle Build Tool
Пример build.gradle
apply plugin: ’java’
version = ’1.0’
repositories {
mavenCentral()
}
dependencies {
compile group: ’commons-collections’, name: ’commons-collec
testCompile group: ’junit’, name: ’junit’, version: ’4.7’
}
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 21 / 23
23. ДЗ:
Реализовать автоматическую сборку докер-образа с исполняемым
файлом.
Запускается Docker-образ с Gradle
Собирает Java-приложение
Собирает Docker-образ с Java-приложением
Перед началом работы, получить issue в git hub.
Вопросы?
Замечания?
Дополнения?
Мартынов Семён, Хозяинов Иван ТРПО (практика) 18 ноября 2017 г. 23 / 23