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插件配置示例:

 <plugin> <groupId>org.jetbrains.kotlin</groupId> <artifactId>kotlin-maven-plugin</artifactId> <version>${kotlin.version}</version> <executions> <execution> <id>compile</id> <phase>process-sources</phase> <goals> <goal>compile</goal> </goals> </execution> <execution> <id>test-compile</id> <phase>test-compile</phase> <goals> <goal>test-compile</goal> </goals> </execution> </executions> </plugin>