В Контексте: Агрегатор Новостей На Android С Бэкендом. Система Сборки

Вводная часть (со ссылками на все статьи) Лет 10-15 назад, когда программы состояли из исходных кодов и небольшого количества бинарных файлов, всевозможные «Эmake» отлично справлялись со сборкой конечных программ.

Однако сейчас современные программы и подходы к развитию сильно изменились – это: много разных файлов (исходники не считаю) – стили, шаблоны, ресурсы, конфигурации, скрипты, бинарные данные и т.д.;

препроцессоры; системы проверки стиля исходников или всего проекта (lint, checkstyle и т.п.

); методы разработки на основе тестов с их запуском при сборке; различные виды стендов; системы развертывания на основе облачных технологий и т.д. и т.п.

Более того, среднестатистическому разработчику приходится проходить этапы сборки финальных или промежуточных артефактов с использованием перечисленных инструментов и техник несколько раз в день.

Запускать пакетные файлы вручную (и, возможно, проверять результаты) в этом случае слишком обременительно: вам нужен инструмент, который отслеживает изменения в данных вашего проекта и запускает необходимые инструменты в зависимости от обнаруженных изменений.

Мой путь к использованию систем сборки был неизвестным_amount_*make -> муравей -> знаток -> Градл (тот факт, что Android Studio использует gradle под капотом, меня очень порадовал).

Меня привлек Gradle:

  • его простая модель (из которой действительно можно вырастить монстра, соизмеримого с создаваемым продуктом);
  • гибкость (как в плане настройки самих скриптов, так и организации их распространения в рамках крупных проектов);
  • постоянное развитие (как и все остальное в развитии – здесь нужно постоянно учиться чему-то новому);
  • простота адаптации (требуется знание groovy и gradle DSL);
  • наличие системы плагинов, разработанных сообществом — к ним относятся различные препроцессоры, генераторы кода, системы доставки и публикации и т. д. и т. п.

    (см.

    логин.

    gradle.org )

Ознакомиться с возможностями Gradle можно на сайте разработчиков по адресу раздел документации (можно узнать все!) .

Для тех, кто хочет сравнить gradle и maven, есть интересное видео от JUG .

В моем случае скрипты сборки выглядят так:

В контексте: агрегатор новостей на Android с бэкендом.
</p><p>
 Система сборки

, Где:

  • 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') {

Теги: #gradle #build system #java #programming #Build Systems #gradle
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.