我对 kotlin-maven 插件有疑问:
编译顺序是如何确定的?
我的意思是:必须首先使用 kotlin 编译器吗?它理解java代码吗? java编译器不理解kotlin代码,所以我猜它会检查字节码,但是为此,kotlin的字节码必须存在,所以必须有人确定kotline编译器必须在javac之前编译它的代码。
示例:我有 java 类 A,它依赖于 Kotlin 类 B,B 也依赖于 A。
我是否必须通过在 java maven 编译器之前声明它来在 maven 插件中手动执行某些操作?
最佳答案
Kotlin 编译器可以解析 java 源代码,因此您可以在 kotlin 代码中引用 java 类,即使这些类尚未编译。
在 Kotlin 编译器编译好 kotlin 代码之后,Java 编译器可以编译那些将编译好的 kotlin 类作为依赖的 java 类。
所以,回答你的问题,是的——在混合了 kotlin 和 java 源的项目中,必须在 java 编译器插件之前执行 Kotlin 编译器插件。这是通过在构建的早期阶段安排执行来实现的,即 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>
关于maven - Kotlin maven 插件编译顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37652948/