Comments 2
Пара моментов по convention-плагинам и kotlin-dsl, о которых мало кто говорит.
1. ID плагинов. Все обычно использут короткие ID, а-ля "android.base.config
". Я считаю, что абсолютно у всех плагинов должен быть FQN, в том числе и у convention-плагинов. Т.е. "io.github.dmitriy1892.conventionplugins.android.base.config
". Длиннее, но в таком виде плагины будет гораздо проще публиковать. А один из самых действенных способов борьбы со скоростью сборки — это публикация convention-плагинов во внутренний репозиторий.
2. Название и расположение файлов. Вы создаете файл "android.base.config.gradle.kts
" в корне. Для плагина с FQN пришлось бы создавать файл с именем "io.github.dmitriy1892.conventionplugins.android.base.config.gradle.kts
". Но это не единственный способ создания плагина. Другой способ — это создать этот файл в io/github/dmitriy1892/conventionplugins/android.base.config.gradle.kts
и в него добавить строку package: `package io.github.dmitriy1892.conventionplugins
` . Так имя файла будет короче, все классы будут в одном пакете, у плагина будет FQN ID и в нем можно будет использовать классы из того же пакета без использования `import`.
Спасибо за дельный комментарий!
Согласен, при публикации плагинов FQN - это must have.
Вместе с тем, для плагинов, которые используются только в рамках конкретного проекта , если FQN длинный, такой нейминг может трудно запоминаться или быть не совсем удобным в использовании.
По второму пункту - да, можно располагать -gradle.kts
файлы и в подпапках, а не в корневой папке, но важно не забыть при использовании плагина дописывать путь через точку где он лежит, т.е. если у файла такое расположение - io/github/dmitriy1892/conventionplugins/android.base.config.gradle.kts
, то при использовании в plugins
-блоке в build.gradle.kts
-файлах нужно указывать так:
plugins {
id("io.github.dmitriy.conventionplugins.android.base.config")
}
Скорее всего, из-за такого не совсем очевидного момента (и возможных неудобств в использовании, если запихать файл слишком глубоко в директории), подход с хранением -gradle.kts
файлов в не-рутовых папках и не возымел широкого распространения :)
Прочие оптимизации кода Gradle Convention Plugins, выводы по результатам использования подхода