2017-07-11 27 views
0

科特林具有可以用于产生用于专门注释的类合成的无参数构造一个noarg compiler plugin。文档页面清楚地说明了如何在Maven和Gradle中使用它,但不清楚它是否可以使用,或者如何使用它,无论是从Ant还是在命令行上使用kotlinc我可以从命令行或从Ant调用Kotlin noargs插件吗?

到目前为止,我已经无法使其工作。这是我的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没有生成无参数构造函数的证据。这里也有一些副作用的证据表明,该插件根本没有运行,以及,在事实上,如果我把垃圾代替字注释-P选项,没有错误消息或行为改变。

如果你能告诉我怎么把它使用kotlinc或蚂蚁,我会很感激跑!

+0

看来一切,我对因此,这些天问得到一个downvote。投下我的人可以解释问题中的缺陷吗? – 0xbe5077ed

回答

1

请检查路径noarg-compiler-plugin.jar文件。 这对我的作品(科特林1.1.3-2从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(); 
} 
+0

不适用于我(在Windows上,通过'cmd.exe'或Cygwin的bash shell)。我也使用Kotlin 1.1.3-2。我已经检查并重新检查了JAR路径至少数十亿次。我会在今天晚些时候在纯粹的Linux VM上尝试它。 – 0xbe5077ed

+0

作为一个更新,我能够让它工作在Linux上刚刚通过下载[科特林1.1.3-2发布](https://github.com/JetBrains/kotlin/releases/tag/v1.1.3-2 )并运行我在我的问题中提供的和您在答案中提供的命令。所以Windows中断了某些东西。一旦我明白了这一点,我会接受你的回答,并修改我的问题以提供有关Windows-y-ness的详细信息。 – 0xbe5077ed

相关问题