gpt4 book ai didi

maven - kapt 生成的代码在编译阶段不可用

转载 作者:IT老高 更新时间:2023-10-28 13:36:16 27 4
gpt4 key购买 nike

我已经使用 kapt 编写了一个代码生成器,并在使用 maven 编译 kotlin 的项目中使用它。

我发现在 Kotlin 的编译阶段之后调用了 kapt 生成器,这使我无法在同一项目中使用 kotlin 中生成的代码。

但是,如果我在同一个项目中从 Java 中引用生成的类,它就可以正常工作。这是因为 java 编译阶段在 kotlin 的生成阶段之后。

我在 maven 配置中在 Kotlin 的编译目标之前指定了 kapt 目标(如 docs 中所述),但这似乎没有什么区别:

        <plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>kapt</id>
<goals>
<goal>kapt</goal>
</goals>
<configuration>
<sourceDirs>
<sourceDir>src/main/java</sourceDir>
</sourceDirs>
<annotationProcessorPaths>
<annotationProcessorPath>
<groupId>lang.taxi</groupId>
<artifactId>taxi-annotation-processor</artifactId>
<version>${taxi.version}</version>
</annotationProcessorPath>
</annotationProcessorPaths>
</configuration>
</execution>
<execution>
<id>compile</id>
<goals> <goal>compile</goal> </goals>
</execution>
<execution>
<id>test-compile</id>
<goals> <goal>test-compile</goal> </goals>
<configuration>
<sourceDirs>
<sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/test/java</sourceDir>
</sourceDirs>
</configuration>
</execution>
</executions>
</plugin>

是否可以配置 Kotlin 以允许我在同一个项目中使用从 Kotlin 生成的代码?

最佳答案

问题在于 kotlin-maven-plugin 是在没有 kapt 目标的父 pom 中定义的,然后又在模块自己的 pom 中定义了 kapt。

这导致编译任务在 kapt 任务之前运行,即使模块的 pom 在 compile 之前指定了 kapt 的顺序。

删除父 pom 条目解决了该问题。

关于maven - kapt 生成的代码在编译阶段不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52819606/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com