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