У меня есть плагин Gradle, реализованный с помощью Kotlin, который построен с помощью скрипта сборки kotlin DSL. Это отлично работает. Сценарий сборки выглядит следующим образом и находится в каталоге buildSr c проекта:
plugins {
groovy
`kotlin-dsl`
}
repositories {
mavenLocal()
mavenCentral()
jcenter()
}
dependencies {
testImplementation(gradleTestKit())
implementation(kotlin("gradle-plugin"))
implementation ("com.bmuschko:gradle-docker-plugin:6.1.3")
}
Теперь я хочу вызвать существующий класс Groovy в том же дереве исходных кодов buildSr c из Kotlin Код плагина. Это прекрасно работает в Intellij.
Но при сборке с Gradle я получаю: неразрешенный эталонный класс для Groovy Class. Глядя на сборку, я вижу, что задача компиляции Kotlin выполняется первой. Когда я раскомментирую ошибочную ссылку, я вижу, что groovyCompile создает правильные двоичные файлы.
Итак, я попробовал это:
tasks.compileKotlin {
dependsOn(tasks.compileGroovy)
}
Естественно, этого недостаточно, но я попытался получить сборку для компиляции кода Groovy.
I получил следующую ошибку:
Circular dependency between the following tasks:
:buildSrc:compileGroovy
\--- :buildSrc:compileJava
\--- :buildSrc:compileKotlin
\--- :buildSrc:compileGroovy (*)
Поэтому я попытался безуспешно удалить зависимость задачи компиляции Java из компиляции Groovy:
tasks.compileGroovy {
dependsOn.remove(tasks.compileJava)
}
Некоторая проблема, как указано выше. В принципе, мне неясно, как удалить предварительно сконфигурированные зависимости задач в gradle
Что мне действительно нужно, это что-то, эквивалентное gradle groovy build as:
compileGroovy.dependsOn = compileGroovy.taskDependencies.values - 'compileJava'
compileKotlin.dependsOn compileGroovy
compileKotlin.classpath += files(compileGroovy.destinationDir)
classes.dependsOn compileKotlin
Как бы это выглядело как Gradle Kotlin Dsl? Или есть лучшие способы решить эту проблему Groovy / Kotlin Зависимость кода?
Информация о версии:
------------------------------------------------------------
Gradle 5.2.1
------------------------------------------------------------
Build time: 2019-02-08 19:00:10 UTC
Revision: f02764e074c32ee8851a4e1877dd1fea8ffb7183
Kotlin DSL: 1.1.3
Kotlin: 1.3.20
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM: 1.8.0_232 (AdoptOpenJDK 25.232-b09)
OS: Mac OS X 10.15.3 x86_64