Плагин пользовательского скрипта Gradle, написанный на kotlin dsl, вызывает ошибку - PullRequest
2 голосов
/ 30 января 2020

Я пытаюсь настроить многопроектную установку с помощью gradle и пытаюсь сгенерировать проекты затмений с помощью eclipse IDE-плагина.

Ниже приведена моя структура.

rootDir/
|---buildSrc/
    |---src/
        |---main/
            |---gradle/
                |---eclipse.gradle.kts
    |---build.gradle.kts
|---app/
    |---build.gradle.kts
|---models/
    |---build.gradle.kts
|---services/
    |---build.gradle.kts
|---build.gradle.kts
|---settings.gradle.kts

Ниже приведены содержимое указанных c файлов, например, settings.gradle.kts и build.gradle.kts

settings.gradle.kts

rootProject.name = "platform"
include("app", "models", "services")

rootDir / build. gradle.kts

...

val buildSrc by extra("$rootDir/buildSrc")

configure(subprojects) {
    apply(from = "$buildSrc/src/main/gradle/eclipse.gradle.kts")
}

rootDir / buildSrc / src / main / gradle / eclipse.gradle.kts


plugins {
    eclipse
}

eclipse {
    project {
        println("Running inside eclipse closure for $name")   
    }
}

Когда я запускаю ./gradlew Я получаю ниже ошибку:

Expression 'eclipse' cannot be invoked as a function. The function 'invoke()' is not found

FAILURE: Build failed with an exception.

* Where:
Script 'D:\work\sources\repos\platform\buildSrc\src\main\gradle\eclipse.gradle.kts' line: 5

* What went wrong:
Script compilation errors:

  Line 5: eclipse {
          ^ Expression 'eclipse' cannot be invoked as a function. The function 'invoke()' is not found

  Line 5: eclipse {
          ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
              public val PluginDependenciesSpec.eclipse: PluginDependencySpec defined in org.gradle.kotlin.dsl

  Line 6:     project {
                      ^ Type mismatch: inferred type is () -> Unit but String! was expected

3 errors

Однако, когда я делаю ниже изменения , он работает без ошибок

rootDir /buildSrc/src/main/gradle/eclipse.gradle заменить файл eclipse.gradle.kts на eclipse.gradle и внести изменения согласно groovy DSL

apply plugin: 'eclipse'
eclipse {
    project {
        println("Running inside eclipse closure for $name")   
    }
}

см. Правильный файл в rootDir / build.gradle.kts

...

val buildSrc by extra("$rootDir/buildSrc")

configure(subprojects) {
    apply(from = "$buildSrc/src/main/gradle/eclipse.gradle")
}

Имеет файл kotlin в gradle каталог в rootDir/buildSrc/src/main/gradle (пользовательский скрипт-плагин), вызывающий эту проблему? Если да, есть ли способ написать собственный плагин сценария - не бинарный плагин - в kotlin dsl?

Я попытался поместить скрипт kotlin в rootDir/buildSrc/src/main/kotlin/eclipse.gradle.kts, но это не помогает .

Любая помощь будет полезна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...