Однако сейчас современные программы и подходы к развитию сильно изменились – это: много разных файлов (исходники не считаю) – стили, шаблоны, ресурсы, конфигурации, скрипты, бинарные данные и т.д.;
препроцессоры; системы проверки стиля исходников или всего проекта (lint, checkstyle и т.п.); методы разработки на основе тестов с их запуском при сборке; различные виды стендов; системы развертывания на основе облачных технологий и т.д. и т.п.
Более того, среднестатистическому разработчику приходится проходить этапы сборки финальных или промежуточных артефактов с использованием перечисленных инструментов и техник несколько раз в день.
Запускать пакетные файлы вручную (и, возможно, проверять результаты) в этом случае слишком обременительно: вам нужен инструмент, который отслеживает изменения в данных вашего проекта и запускает необходимые инструменты в зависимости от обнаруженных изменений.
Мой путь к использованию систем сборки был неизвестным_amount_*make ->
муравей -> знаток -> Градл (тот факт, что Android Studio использует gradle под капотом, меня очень порадовал).Меня привлек Gradle:
- его простая модель (из которой действительно можно вырастить монстра, соизмеримого с создаваемым продуктом);
- гибкость (как в плане настройки самих скриптов, так и организации их распространения в рамках крупных проектов);
- постоянное развитие (как и все остальное в развитии – здесь нужно постоянно учиться чему-то новому);
- простота адаптации (требуется знание groovy и gradle DSL);
- наличие системы плагинов, разработанных сообществом — к ним относятся различные препроцессоры, генераторы кода, системы доставки и публикации и т. д. и т. п.
(см.
gradle.org )
Для тех, кто хочет сравнить gradle и maven, есть интересное видео от JUG .
В моем случае скрипты сборки выглядят так:
,
Где:
- build_scripts/build-tasks.gradle — все задачи для сборки с указанием их зависимостей;
- build_scripts/dependents.gradle — описания зависимостей и методов публикации;
- build.gradle — основной скрипт, определяющий зависимые модули, библиотеки и включающий другие скрипты сборки;
- settings.gradle — список зависимых модулей и настройки самого скрипта (можно переопределить аргументы запуска gradle).
Советы
Вот некоторые интересные вещи/советы, которыми я хотел бы поделиться при настройке gradle в моем проекте:- Удаление версий артефактов (рыться в блоках модулей оказалось скучным занятием)
Объявляем блок с зависимостями:
// project dependencies ext { COMMONS_POOL_VER='2.4.2' DROPWIZARD_CORE_VER='1.1.0' DROPWIZARD_METRICS_VER='3.2.2' DROPWIZARD_METRICS_INFLUXDB_VER='0.9.3' JSOUP_VER='1.10.2' STORM_VER='1.0.3' .
GROOVY_VER='2.4.7' // test TEST_JUNIT_VER='4.12' TEST_MOCKITO_VER='2.7.9' TEST_ASSERTJ_VER='3.6.2' }
project(':crawler_scripts') {
-
Жизнь Как Услуга (Laas)?
19 Oct, 24 -
Слушайте Радио Или Полицейскую Волну Онлайн
19 Oct, 24