Kotlin maven插件编译顺序
我有一个关于kotlin-maven插件的问题:如何确定编译顺序? 我的意思是:kotlin编译器必须先来吗? 它理解java代码吗? java编译器不能理解kotlin代码,所以我想它会检查字节码,但为此,kotlin的字节码必须存在,所以有人必须确定kotline编译器必须在javac之前编译它的代码。
例如:我有Java类A,依赖于Kotlin类B和B也依赖于A.
我是否必须在maven插件中手动执行某些操作,方法是在java maven编译器之前声明它。
Kotlin编译器可以解析java源代码,所以即使这些类还没有被编译,你也可以在你的kotlin代码中引用java类。
在Kotlin编译器编译完kotlin代码后,Java编译器可以编译那些以编译kotlin类为依赖的java类。
所以,回答你的问题,是的 – Kotlin编译器插件必须在java编译器插件之前执行,在一个混合了kotlin和java源代码的项目中。 这是通过在构建的早期阶段(即process-sources
上安排执行来实现的。
下面是混合Kotlin-Java maven模块的kotlin maven插件配置示例:
org.jetbrains.kotlin kotlin-maven-plugin ${kotlin.version} compile process-sources compile test-compile test-compile test-compile
为了编译包含Kotlin和Java代码的项目,您必须确保Kotlin编译器在Java编译器之前运行。 我按照官方Kotlin文档中所述配置了编译插件,它的function就像一个魅力:
kotlin-maven-plugin org.jetbrains.kotlin ${kotlin.version} compile compile test-compile test-compile maven-compiler-plugin org.apache.maven.plugins 3.5.1 1.8 1.8 default-compile none default-testCompile none java-compile compile compile java-test-compile test-compile testCompile