Gradle-это инструмент, который всегда вызывает споры среди разработчиков. Давайте посмотрим, что принесет и сломает версия 7.
Я впервые столкнулся с Gradle при разработке на Android, и мое первое впечатление было, что это не самый дружественный инструмент; загадочный синтаксис, противоречивые термины (см. Компиляция против реализации) и своеобразные блоки элементов.
Переход от Groovy к Kotlin DSL-это еще одно свидетельство того, что инструмент имеет корни в Android, и по мере развития платформы так же развивался Gradle. После Android я использовал Gradle в мире Spring Boot world all-Maven, и это действительно противоречило друг другу, временами делая мою жизнь несчастной, когда я жонглировал синтаксисом, плагинами и зависимостями.
После того, как все,наконец, сошлось воедино, я вошел в менталитет «если это сработает, не возись с этим», опасаясь, что малейшее изменение может сломать мою сборку. В отличие от этого, для такого рода Java-проектов я обнаружил, что Maven легче использовать и понимать из-за его конкретной структуры и более очевидных способов выполнения задач.
Я думаю, что мой случай резонирует в целом, и на самом деле все сводится к высказыванию Брюса Экеля:
«Чтобы что-то делать [в Gradle], вы должны знать все».
И, конечно, дело в том, что почти каждое обновление версии разрывает связи с прошлым. Я не могу использовать более старую версию Gradle для компиляции проекта, построенного с помощью более новой. Я думаю, вы могли бы сказать, что это решается с помощью оберток, но все же..
В любом случае, только что вышла новая версия 7.0, так что давайте посмотрим, что она приносит и что она ломает.
Прежде всего, он обеспечивает поддержку Java 16. Тогда есть:
Файловая система следит за изменениями для более быстрой инкрементной сборки
Встроенная поддержка Apple silicon
Groovy 3 в скриптах сборки Groovy DSL
Повышение производительности для инкрементных изменений в проектах Android
Также. он спонсирует новую функцию под названием «каталоги версий», которая упрощает управление версиями, поскольку она разделяет версии зависимостей между проектами.
Каталоги версий являются общими и доступны для всех проектов сборки, поэтому их главное преимущество заключается в том, что при введении версии зависимости она реплицируется для каждого проекта.
Каталоги версий являются экспериментальными и могут быть включены путем редактирования настроек.:
enableFeaturePreview(«VERSION_CATALOGS»)
Конечно, как всегда, есть и прорывные изменения:
Из-за обновления до следующей основной версии Groovy могут возникнуть незначительные проблемы при обновлении до Gradle 7.0.
В Gradle 7 удаляются конфигурации компиляции и среды выполнения. Поэтому вам необходимо перейти к приведенным выше конфигурациям реализации и api. Если вы все еще используете плагин java для библиотеки Java, вам нужно будет вместо этого применить плагин java-библиотеки.
Есть целое руководство по обновлению с версии 6x до 7.0 и, конечно же, 160 исправлений ошибок.
Это самые важные изменения, но есть гораздо больше, которые можно найти в примечаниях к выпуску 7.0.
Таким образом, в конце концов, версия 7 Gradle необходима для того, чтобы догнать разработки платформы Android, поскольку она по-прежнему в основном ориентирована на Android.
Используете ли вы Gradle pro или Anti, и используете ли вы его также в проектах, не связанных с Android? Оставьте комментарий ниже, чтобы сообщить нам об этом.