Использование задач ant от gradle-script-kotlin

Как я могу получить доступ к задачам ant из сценария build.gradle.kts ? В частности, меня интересует задача ant.patch .

Могу ли я продлить его так?

 task("patchSources", Patch::class) { 

Могу ли я вызвать его из другой задачи, например?

 task("patchSources") { doLast { ant.patch(...) } } 

Я знаю, как это сделать в Groovy: как применить файл исправлений в Gradle?

Это работает для меня:

 import org.apache.tools.ant.taskdefs.Patch val patchConfigTask = task("patchConfig") { dependsOn(unzipTask) doLast { val resources = projectDir.resolve("src/main/resources") val patchFile = resources.resolve("config.patch") Patch().apply { setPatchfile(patchFile) setDir(buildDir.resolve("config/")) setStrip(1) // gets rid of the a/ b/ prefixes execute() } } } 

Я не уверен, что это одно-правостороннее.

AntBuilder простирается от Groovy's AntBuilder . Вы можете перевести вызовы динамического метода из groovy like ant.patch() в Kotlin с помощью invokeMethod и предоставления желаемой задачи в качестве первого аргумента и свойств для привязки в качестве карты во втором аргументе.

Например, для вашего случая использования Patch ( документация доступных свойств ) Kotlin может выглядеть так:

 val patchSources by tasks.creating { doLast { ant.invokeMethod("patch", mapOf( "patchfile" to patchFile, "dir" to configDir, "strip" to 1 )) } }