Gradle Kotlin DSL: как настраивать подпроекты с использованием typesafe api - PullRequest
3 голосов
/ 12 февраля 2020

Gradle 6.1.1

Я пытался преобразовать файлы Gradle своих проектов с использованием Kotlin DSL в типобезопасном режиме, но пока не получилось. Все мои проекты являются многопроектными сборками в Java. Идея состоит в том, чтобы разложить / дедуплицировать общие конфигурации подмодулей (будь то в блоке «подпроекты» модуля root или в отдельном файле «kts», мне все равно). Официальная документация гласит, что невозможно иметь типобезопасность с «подпроектами» и применять (from = «shared.gradle.kts») (https://docs.gradle.org/current/userguide/kotlin_dsl.html).

It работает как показано ниже, но это довольно раздражает:


plugins {
    idea
    eclipse
}

subprojects {
    apply(plugin = "java")

    dependencies {
       "implementation"("com.google.guava:guava:28.1-jre")
       //...
    }
}

Есть ли способ факторизовать конфигурации модулей для всех подмодулей безопасным для типов образом? Если нет ... Планирует ли Gradle это разрешить?

1 Ответ

1 голос
/ 12 февраля 2020

Gradle 6.1.1 Типобезопасные средства доступа к модели читает:

Только основные сценарии сборки проекта и предварительно скомпилированные подключаемые модули сценариев имеют средства доступа к модели с типом безопасности. Скриптов инициализации, скриптов настроек, плагинов скриптов нет. Эти ограничения будут сняты в будущем выпуске Gradle .

Что бы ни значил "будущий выпуск" ... в то время как Кросс-конфигурирование проектов гласит:

Межпроектная конфигурация - это механизм, с помощью которого вы можете настроить проект из сценария сборки другого проекта. Типичным примером является настройка подпроектов в сценарии сборки проекта root. При таком подходе вы не сможете использовать типобезопасные средства доступа для элементов модели, предоставляемых плагинами . Вместо этого вам придется полагаться на строковые литералы и стандартные API Gradle.

...