我无法让apollo-client-maven-plugin从命令行编译kotlin中的类。我不知道这个问题是由于插件配置,或者是不正确的,丢失的,或者冲突的依赖关系。我希望能有一些建议来给我指出正确的方向。
当 * targetLanguage * 值设置为JAVA,并且我运行mvn clean verify -U
时,内省工作,代码生成,测试通过。但是,当我将 * targetLanguage * 配置为KOTLIN_1_5时,它无法编译。项目无法编译,"Unresolved reference:graphql " and "在测试-编译阶段,没有足够的信息来推断类型变量D " 错误。尽管如此,我仍然能够在Intellij IDEA中运行测试。测试编译、运行并通过。在IDE中通过测试后,我可以从命令行运行mvn verify
,测试将通过,直到下一个干净的构建。
- 这是一个多模块java + kotlin项目的一部分,所以我不认为maven-kotlin-plugin本身有问题。
- 我在项目中编写了一个健全性测试。这是一个遇到导入问题的类。我试着将这个测试移到一个子项目中,但是我在下游遇到了同样的问题。
- 我尝试过交换不同的运行时依赖项:阿波罗运行时、阿波罗运行时JVM和阿波罗运行时Kotlin。
- 我试过在pom中设置kotlin插件的语言级别和版本为1.5。
apollo-client项目的pom.xml
<dependencies>
<dependency>
<groupId>com.mycompany.testing</groupId>
<artifactId>automation-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.apollographql.apollo3</groupId>
<artifactId>apollo-api</artifactId>
<version>3.7.3</version>
</dependency>
<dependency>
<groupId>com.apollographql.apollo3</groupId>
<artifactId>apollo-runtime-jvm</artifactId>
<version>3.7.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.github.aoudiamoncef</groupId>
<artifactId>apollo-client-maven-plugin</artifactId>
<version>5.0.0</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<services>
<myServer>
<sourceFolder>${project.basedir}/src/main/graphql/myServer
</sourceFolder>
<schemaPath>
${project.basedir}/src/main/graphql/myServer/schema.json
</schemaPath>
<includes>
<include>**/*.graphql</include>
<include>**/*.gql</include>
<include>**/*.json</include>
<include>**/*.sdl</include>
</includes>
<compilationUnit>
<name>myServer</name>
<outputDirectory>
${project.build.directory}/generated-sources/graphql-client/myServer/
</outputDirectory>
<testDirectory>
${project.build.directory}/generated-sources/graphql-client/myServer/test/
</testDirectory>
<debugDirectory>
${project.build.directory}/generated-sources/graphql-client/myServer/debug/
</debugDirectory>
<operationOutputFile>
${project.build.directory}/generated/operationOutput/apollo/universe/operationOutput.json
</operationOutputFile>
<generateOperationDescriptors>true
</generateOperationDescriptors>
<compilerParams>
<rootFolders>
<rootFolder>
${project.basedir}/src/main/graphql/myServer/
</rootFolder>
</rootFolders>
<schemaPackageName>
com.mycompany.automation.graphql.client
</schemaPackageName>
<packageName>com.mycompany.automation.graphql.client
</packageName>
<codegenModels>OPERATION</codegenModels>
<flattenModels>true</flattenModels>
<generateApolloMetadata>true</generateApolloMetadata>
<generateAsInternal>true</generateAsInternal>
<generateFilterNotNull>false</generateFilterNotNull>
<generateFragmentImplementations>true
</generateFragmentImplementations>
<generateKotlinModels>true</generateKotlinModels>
<generateOptionalOperationVariables>false
</generateOptionalOperationVariables>
<generateQueryDocument>true</generateQueryDocument>
<generateResponseFields>false</generateResponseFields>
<generateSchema>false</generateSchema>
<generateTestBuilders>false</generateTestBuilders>
<moduleName>apollographql</moduleName>
<targetLanguage>KOTLIN_1_5</targetLanguage>
</compilerParams>
</compilationUnit>
<introspection>
<enabled>true</enabled>
<endpointUrl>${introspection.endpoint.url}</endpointUrl>
<schemaFile>${introspection.schema.file}</schemaFile>
<prettyPrint>true</prettyPrint>
</introspection>
</myServer>
</services>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
父项目的maven插件配置条目
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>1.7.22</version>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<nowarn>true</nowarn>
<sourceDirs>
<sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
<sourceDir>${project.basedir}/src/main/java</sourceDir>
</sourceDirs>
</configuration>
</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>
编译堆栈跟踪
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.jetbrains.kotlin:kotlin-maven-plugin:1.5.20:test-compile (test-compile) on project automation-graphql-support: Compilation failure
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:298)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.jetbrains.kotlin.maven.KotlinCompilationFailureException: Compilation failure
at org.jetbrains.kotlin.maven.MavenPluginLogMessageCollector.throwKotlinCompilerException (MavenPluginLogMessageCollector.java:111)
at org.jetbrains.kotlin.maven.KotlinCompileMojoBase.execute (KotlinCompileMojoBase.java:212)
at org.jetbrains.kotlin.maven.K2JVMCompileMojo.execute (K2JVMCompileMojo.java:222)
at org.jetbrains.kotlin.maven.KotlinTestCompileMojo.execute (KotlinTestCompileMojo.java:84)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:298)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
版本:
- 阿波罗运行时/阿波罗运行时JVM:3.7.3
- 阿波罗-运行时-Kotlin:3.0.0-dev12
- 阿波罗-应用程序接口/阿波罗-应用程序接口-JVM:3.7.3
- apollo-client-maven插件:5.0.0
- java:www.example.com(父pom)11.0.16.1 (parent pom)
- kotlin-maven-插件:1.7.22(母体POM)
- 考特林反射:1.7.22(母体POM)
- kotlin标准库:1.7.22(母体POM)
1条答案
按热度按时间z6psavjg1#
我注意到自动生成的源代码没有被编译器拾取。在sourceDir条目中添加了生成代码的目标文件夹: