maven - Kotlin maven 插件编译顺序

标签 maven kotlin

我对 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/

相关文章:

java - Maven编译java报错diamond Operator is notsupported

java - 如何压缩java应用程序以得到一个minify jar

java - Fragment和Activity之间的通信

java - 无法在 Intellij 中指定主 list 属性

android - Kotlin:如何在 RecyclerView.Adapter 中调用 getSupportFragmentManager()

android - 滑动 Java.lang.IllegalStateException : Cannot obtain size for recycled Bitmap: android. graphics.Bitmap@a4f3bcf[896x157] ARGB_8888

database - 如何使用Maven向数据库插入数据

java - Maven Spring 启动 :run against compiled jar

java - 如何使用zookeeper作为基于spring的Web应用程序的数据源来加载属性?

android - Kotlin从字符串解析 double