Я пытаюсь создать простую программу 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 (как описано в this page, например), но плагин кажется довольно сложным в использовании, и у меня уже достаточно проблем с рядом сложностей в этом проекте, поэтому я не решаюсь ввести в него очень слабо документированный плагин с открытым исходным кодом. На данный момент я действительно пытаюсь создать самую простую программу "Hello, World" на JavaFX / Gradle, и это пока казалось на удивление сложным.)
Любая помощь будет оценена по достоинству.
tasks.named<JavaCompile>('compileJava'){ ... }
, который будет влиять только на одну конкретную задачу JavaCompile с заданным именем, а не на все они (например, задача 'compileTestJava' также может существовать и имеют тип JavaCompile). - person Some Guy   schedule 07.11.2018