我使用kapt编写了一个代码生成器,并在使用maven编译kotlin的项目中使用它。
我发现kapt生成器是在Kotlin编译阶段之后调用的,这妨碍了我在同一项目中使用生成的代码。
但是,如果我从同一项目中的Java中引用生成的类,则可以正常工作。这是因为Java编译阶段在Kotlin的生成阶段之后。
我已在maven配置中将kapt目标指定在Kotlin编译目标之前(如文档中提到的),但似乎没有任何区别:
<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生成的代码?