¿Puedo invocar el complemento noargs de Kotlin desde la command-line o desde Ant?

Kotlin tiene un complemento de compilation noarg que se puede usar para generar constructores sintéticos sin argumento para classs anotadas especialmente. La página de documentation explica claramente cómo usarla con Maven y Gradle, pero no está claro si se puede usar o cómo usarla, ya sea desde Ant o utilizando kotlinc en la command-line.

Hasta ahora no he podido hacerlo funcionar. Aquí está mi file fuente NoArgs.kt :

 package test annotation class NoArgs @NoArgs data class Test(val x: String, val y: String) 

Y aquí hay algunas líneas de command que he probado, que no tienen ningún efecto:

 $ kotlinc -verbose "-Xplugin:$KOTLIN_HOME/lib/noarg-compiler-plugin.jar -P plugin:org.jetbrains.kotlin.noarg:annotation=test.NoArgs NoArgs.kt 

y:

 $ kotlinc -verbose "-Xplugin=$KOTLIN_HOME/lib/kotlin-annotation-processing.jar;$KOTLIN_HOME/lib/noarg-compiler-plugin.jar;$JRE_HOME/lib/tools.jar" -P plugin:org.jetbrains.kotlin.noarg:annotation=test.NoArgs NoArgs.kt 

Cuando ejecuto $ javap test.Test no hay evidencia de un constructor no-args generado. Hay evidencia secundaria de que el complemento no se está ejecutando en absoluto, en el hecho de que si pongo basura en lugar de la palabra anotación para la opción -P , no hay ningún post de error o cambio en el comportamiento.

Si puedes decirme cómo hacerlo funcionar usando kotlinc o Ant, ¡realmente lo agradecería!

Verifique la ruta al noarg-compiler-plugin.jar . Esto funciona para mí (Kotlin 1.1.3-2 de Homebrew ):

kotlinc-jvm -Xplugin=$KOTLIN_HOME/libexec/lib/noarg-compiler-plugin.jar -P plugin:org.jetbrains.kotlin.noarg:annotation=test.NoArgs NoArgs.kt

 Compiled from "NoArgs.kt" public final class test.Test { public final java.lang.String getX(); public final java.lang.String getY(); public test.Test(java.lang.String, java.lang.String); public final java.lang.String component1(); public final java.lang.String component2(); public final test.Test copy(java.lang.String, java.lang.String); public static test.Test copy$default(test.Test, java.lang.String, java.lang.String, int, java.lang.Object); public java.lang.String toString(); public int hashCode(); public boolean equals(java.lang.Object); public test.Test(); }