Pull to refresh

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 файлов в не-рутовых папках и не возымел широкого распространения :)

Sign up to leave a comment.