Я пытаюсь создать простую программу JavaFX 11 с Kotlin и Java 11, используя Gradle, следуя инструкциям здесь . Однако на этой странице используется Groovy DSL от Gradle, и я пытаюсь использовать Kotlin DSL. Удивительно, но мои поиски в Google не обнаружили документ, который сопоставляет каждую конструкцию Groovy с ее эквивалентной конструкцией Kotlin или объясняет в целом, как преобразовать код Groovy DSL в эквивалентный код Kotlin DSL. (Это кажется большим упущением в документации Gradle!).
В частности, этот документ содержит следующий код Groovy:
compileJava {
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
'--add-modules', 'javafx.controls'
]
}
}
run {
doFirst {
jvmArgs = [
'--module-path', classpath.asPath,
'--add-modules', 'javafx.controls'
]
}
}
Насколько я могу судить, котлинский эквивалент первой части выглядит так:
tasks.withType<JavaCompile> {
options.compilerArgs.addAll(arrayOf(
"--module-path", classpath.asPath,
"--add-modules", "javafx.controls"
))
}
Однако я не смог выяснить, что такое Kotlin DSL, эквивалентный второй части. Обратите внимание, что «run» является стандартным расширением функции в стандартной библиотеке Kotlin, поэтому не похоже, что версия Kotlin этого кода может использовать имя «run» для той же цели в Kotlin DSL.
(Примечание: я рассмотрел попытку использовать плагин для поддержки JavaFX (как описано, например, на этой странице), но плагин кажется довольно сложным в использовании, и у меня уже есть достаточно проблем из-за ряда сложностей в этом проекте, которые я не решаюсь представить очень легко документированный плагин с открытым исходным кодом в миксе.Я действительно пытаюсь создать самую простую из возможных программ "Hello, World" на JavaFX / Gradle на данный момент и до сих пор это казалось удивительно трудным.)
Буду признателен за любую помощь.