我可以从命令行或 Ant 调用 Kotlin noargs 插件吗?
Can I invoke the Kotlin noargs plugin from the command line or from Ant?
Kotlin 有一个 noarg compiler plugin,可用于为特殊注释的 类 生成合成无参数构造函数。文档页面清楚地解释了如何将它与 Maven 和 Gradle 一起使用,但不清楚它是否可以使用,或者如何使用它,无论是从 Ant 还是在命令行上使用 kotlinc
。
到目前为止,我一直无法让它发挥作用。这是我的 NoArgs.kt
源文件:
package test
annotation class NoArgs
@NoArgs data class Test(val x: String, val y: String)
下面是我试过的一些命令行,但完全没有效果:
$ kotlinc -verbose "-Xplugin:$KOTLIN_HOME/lib/noarg-compiler-plugin.jar -P plugin:org.jetbrains.kotlin.noarg:annotation=test.NoArgs NoArgs.kt
和:
$ 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
当我 运行 $ javap test.Test
时,没有生成无参数构造函数的证据。还有一些侧面证据表明该插件根本不是 运行ning,事实上,如果我将垃圾而不是单词 annotation 用于 -P 选项,没有错误消息或行为变化。
如果您能告诉我如何使用 kotlinc
或从 Ant 将其获取到 运行,我将不胜感激!
请检查 noarg-compiler-plugin.jar
文件的路径。
这对我有用(来自 Homebrew 的 Kotlin 1.1.3-2):
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();
}
Kotlin 有一个 noarg compiler plugin,可用于为特殊注释的 类 生成合成无参数构造函数。文档页面清楚地解释了如何将它与 Maven 和 Gradle 一起使用,但不清楚它是否可以使用,或者如何使用它,无论是从 Ant 还是在命令行上使用 kotlinc
。
到目前为止,我一直无法让它发挥作用。这是我的 NoArgs.kt
源文件:
package test
annotation class NoArgs
@NoArgs data class Test(val x: String, val y: String)
下面是我试过的一些命令行,但完全没有效果:
$ kotlinc -verbose "-Xplugin:$KOTLIN_HOME/lib/noarg-compiler-plugin.jar -P plugin:org.jetbrains.kotlin.noarg:annotation=test.NoArgs NoArgs.kt
和:
$ 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
当我 运行 $ javap test.Test
时,没有生成无参数构造函数的证据。还有一些侧面证据表明该插件根本不是 运行ning,事实上,如果我将垃圾而不是单词 annotation 用于 -P 选项,没有错误消息或行为变化。
如果您能告诉我如何使用 kotlinc
或从 Ant 将其获取到 运行,我将不胜感激!
请检查 noarg-compiler-plugin.jar
文件的路径。
这对我有用(来自 Homebrew 的 Kotlin 1.1.3-2):
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();
}