You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

命令行编译apollo-client-maven-plugin生成的Kotlin代码失败求助

排查方向建议

1. 确认apollo插件的执行阶段与代码生成时机

  • 检查apollo-client-maven-plugin的<phase>配置,确保它在测试编译前执行(比如绑定到generate-test-sources阶段)。如果插件在test-compile之后才生成Kotlin代码,maven测试编译时会找不到刚生成的类,就会报Unresolved reference: graphql。
  • 对比targetLanguage=JAVA时的插件执行阶段配置,确认Kotlin模式下没有差异。
  • 可以通过mvn clean verify -X(debug模式)查看插件执行的时间点,确认是否早于test-compile阶段。

2. 让kotlin-maven-plugin识别生成的Kotlin代码目录

IDEA会自动扫描生成代码目录,但maven命令行不会。需要在kotlin-maven-plugin的配置中手动添加apollo生成代码的路径:

<plugin>
  <groupId>org.jetbrains.kotlin</groupId>
  <artifactId>kotlin-maven-plugin</artifactId>
  <configuration>
    <!-- 主代码生成目录 -->
    <sourceDirs>
      <sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
      <sourceDir>${project.build.directory}/generated-sources/apollo</sourceDir>
    </sourceDirs>
    <!-- 测试代码生成目录 -->
    <testSourceDirs>
      <testSourceDir>${project.basedir}/src/test/kotlin</testSourceDir>
      <testSourceDir>${project.build.directory}/generated-test-sources/apollo</testSourceDir>
    </testSourceDirs>
  </configuration>
</plugin>

3. 检查apollo依赖的作用域与版本兼容性

  • 确保apollo-runtime-kotlin等依赖的作用域正确:如果是测试代码使用,设为<scope>test</scope>;主代码使用则设为<scope>compile</scope>,避免测试编译阶段依赖缺失。
  • 确认apollo插件版本与runtime版本完全一致,且支持Kotlin 1.5。比如部分apollo3版本最低要求Kotlin 1.6,若你的项目用1.5,需降级到兼容的apollo版本。
  • 多模块项目中,检查父pom的dependencyManagement是否正确声明了apollo依赖版本,子模块是否正确引入依赖。

4. 解决泛型类型推断问题

Not enough information to infer type variable D错误可能是maven的Kotlin编译器比IDEA更严格导致的:

  • 找到测试代码中调用生成的GraphQL代码的地方,显式指定泛型类型,比如将apolloClient.query(MyQuery())改为apolloClient.query<MyQuery.Data, MyQuery.Variables>(MyQuery())。
  • 检查生成的Kotlin代码是否存在泛型定义不明确的情况,可对比JAVA模式下生成的代码结构,看Kotlin版本的生成逻辑是否有差异。

5. 验证maven构建的依赖传递与缓存

  • 执行mvn clean dependency:tree,查看测试阶段的依赖树,确认apollo-runtime-kotlin及其依赖(如graphql-java)是否被正确引入到测试类路径中。
  • 排除maven缓存问题,执行mvn clean verify -U -Dmaven.repo.local=/tmp/new-repo,用全新的本地仓库构建,看是否仍报错。

内容的提问来源于stack exchange,提问作者Chris S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 17:51:29