找不到 protoc-gen-grpc-kotlin-1.0.0-windows-x86_64.exe (io.grpc:protoc-gen-grpc-kotlin:1.0.0)

Jim*_*m C 3 gradle kotlin grpc protoc micronaut

我想使用 protoc-gen-grpc-kotlin 中的protoc-gen-grpc-kotlin -1.0.0并且我得到了

\n
Execution failed for task \':generateProto\'.\n> Could not resolve all files for configuration \':protobufToolsLocator_grpckt\'.\n   > Could not find protoc-gen-grpc-kotlin-1.0.0-windows-x86_64.exe (io.grpc:protoc-gen-grpc-kotlin:1.0.0).\n     Searched in the following locations:\n         https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-kotlin/1.0.0/protoc-gen-grpc-kotlin-1.0.0-windows-x86_64.exe\n\nPossible solution:\n - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html\n
Run Code Online (Sandbox Code Playgroud)\n

整个堆栈跟踪是

\n
C:\\_d\\toLearn\\demo-grpc-jaeger>gradle clean build --stacktrace\n> Task :generateProto FAILED\n\nFAILURE: Build failed with an exception.\n\n* What went wrong:\nExecution failed for task \':generateProto\'.\n> Could not resolve all files for configuration \':protobufToolsLocator_grpckt\'.\n   > Could not find protoc-gen-grpc-kotlin-1.0.0-windows-x86_64.exe (io.grpc:protoc-gen-grpc-kotlin:1.0.0).\n     Searched in the following locations:\n         https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-kotlin/1.0.0/protoc-gen-grpc-kotlin-1.0.0-windows-x86_64.exe\n\n* Try:\nRun with --info or --debug option to get more log output. Run with --scan to get full insights.\n\n* Exception is:\norg.gradle.api.tasks.TaskExecutionException: Execution failed for task \':generateProto\'.\n        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:38)\n        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)\n        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)\n        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)\n        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)\n        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)\n        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)\n        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)\n        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)\n        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)\n        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)\n        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)\n        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)\n        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)\n        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)\n        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)\n        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)\n        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)\n        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)\n        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)\n        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)\n        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)\n        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)\n        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)\n        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)\n        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)\n        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)\nCaused by: org.gradle.api.internal.artifacts.ivyservice.DefaultLenientConfiguration$ArtifactResolveException: Could not resolve all files for configuration \':protobufToolsLocator_grpckt\'.\n        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.rethrowFailure(DefaultConfiguration.java:1282)\n        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration.access$1700(DefaultConfiguration.java:139)\n        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.visitArtifacts(DefaultConfiguration.java:1259)\n        at org.gradle.api.internal.artifacts.configurations.DefaultConfiguration$ConfigurationFileCollection.visitContents(DefaultConfiguration.java:1252)\n        at org.gradle.api.internal.file.AbstractFileCollection.visitStructure(AbstractFileCollection.java:326)\n        at org.gradle.api.internal.file.collections.DefaultConfigurableFileCollection.lambda$calculateFinalizedValue$0(DefaultConfigurableFileCollection.java:249)\n        at org.gradle.api.internal.file.collections.UnpackingVisitor.add(UnpackingVisitor.java:61)\n        at org.gradle.api.internal.file.collections.UnpackingVisitor.add(UnpackingVisitor.java:94)\n        at \n        \n        ...\n        \n        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)\n        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)\n        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)\n        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)\n        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)\n        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)\n        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)\n        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)\n        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)\n        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)\n        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)\nCaused by: org.gradle.internal.resolve.ArtifactNotFoundException: Could not find protoc-gen-grpc-kotlin-1.0.0-windows-x86_64.exe (io.grpc:protoc-gen-grpc-kotlin:1.0.0).\nSearched in the following locations:\n    https://repo.maven.apache.org/maven2/io/grpc/protoc-gen-grpc-kotlin/1.0.0/protoc-gen-grpc-kotlin-1.0.0-windows-x86_64.exe\n        at org.gradle.internal.resolve.result.DefaultBuildableArtifactResolveResult.notFound(DefaultBuildableArtifactResolveResult.java:28)\n        at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository$LocateInCacheRepositoryAccess.resolveArtifactFromCache(CachingModuleComponentRepository.java:345)\n        at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository$LocateInCacheRepositoryAccess.resolveArtifact(CachingModuleComponentRepository.java:297)\n        at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.ErrorHandlingModuleComponentRepository$ErrorHandlingModuleComponentRepositoryAccess.lambda$resolveArtifact$15(ErrorHandlingModuleComponentRepository.java:181)\n        at \n        \n        ...\n        \n        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)\n        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)\n        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)\n        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)\n        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)\n        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)\n        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)\n        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)\n        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)\n        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)\n        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)\n        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)\n        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)\n\n\n* Get more help at https://help.gradle.org\n\nBUILD FAILED in 2s\n4 actionable tasks: 4 executed\n\nC:\\_d\\toLearn\\demo-grpc-jaeger> \n
Run Code Online (Sandbox Code Playgroud)\n

如果它添加了一些有用的信息,如果我显着降级版本,则会导致不同的错误。

\n

使用实现(“io.grpc:protoc-gen-grpc-kotlin:0.1.2”)

\n
C:\\_d\\toLearn\\demo-grpc-jaeger\\build\\tmp\\kapt3\\stubs\\main\\com\\tolearn\\DemoGrpcJaegerServiceGrpcKt.java:35: error: incompatible types: NonExistentClass cannot be converted to Annotation\n    @error.NonExistentClass()\n
Run Code Online (Sandbox Code Playgroud)\n

它将错误指向自动生成的存根

\n

智能

\n

这是完整的 build.gradle

\n
plugins {\n    id("org.jetbrains.kotlin.jvm") version "1.4.10"\n    id("org.jetbrains.kotlin.kapt") version "1.4.10"\n    id("org.jetbrains.kotlin.plugin.allopen") version "1.4.10"\n    id("com.github.johnrengelman.shadow") version "6.1.0"\n    id("io.micronaut.application") version "1.2.0"\n    id("com.google.protobuf") version "0.8.13"\n}\n\nversion = "0.1"\ngroup = "com.tolearn"\n\nrepositories {\n    mavenCentral()\n    jcenter()\n}\n\nmicronaut {\n    testRuntime("junit5")\n    processing {\n        incremental(true)\n        annotations("com.tolearn.*")\n    }\n}\n\ndependencies {\n\n    implementation("io.grpc:protoc-gen-grpc-kotlin:1.0.0")\n\n    implementation("io.micronaut:micronaut-validation")\n    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")\n    implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")\n    implementation("io.micronaut.kotlin:micronaut-kotlin-runtime")\n    implementation("io.micronaut:micronaut-runtime")\n    implementation("io.micronaut.grpc:micronaut-grpc-runtime")\n    implementation("javax.annotation:javax.annotation-api")\n    implementation("io.micronaut:micronaut-http-client")\n    implementation("io.micronaut:micronaut-tracing")\n\n    runtimeOnly("io.jaegertracing:jaeger-thrift")\n    runtimeOnly("ch.qos.logback:logback-classic")\n    runtimeOnly("com.fasterxml.jackson.module:jackson-module-kotlin")\n}\n\n\napplication {\n    mainClass.set("com.tolearn.ApplicationKt")\n}\n\njava {\n    sourceCompatibility = JavaVersion.toVersion("11")\n}\n\ntasks {\n    compileKotlin {\n        kotlinOptions {\n            jvmTarget = "11"\n        }\n    }\n    compileTestKotlin {\n        kotlinOptions {\n            jvmTarget = "11"\n        }\n    }\n\n\n}\n\nsourceSets {\n    main {\n        java {\n            srcDirs("build/generated/source/proto/main/grpc")\n            srcDirs \'build/generated/source/proto/main/grpckt\'\n            srcDirs("build/generated/source/proto/main/java")\n        }\n    }\n}\n\nprotobuf {\n    protoc { artifact = "com.google.protobuf:protoc:3.14.0" }\n    plugins {\n        grpc { artifact = "io.grpc:protoc-gen-grpc-java:1.33.1" }\n        grpckt { artifact = "io.grpc:protoc-gen-grpc-kotlin:1.0.0" }\n    }\n    generateProtoTasks {\n        all()*.plugins {\n            grpc {}\n            grpckt {}\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

整个项目可以从github克隆

\n

所以我的直接问题是:如何添加 protoc-gen-grpc-kotlin-1.0.0?

\n

第二个问题:我看到一些使用 kapt(enforcedPlatform ... 和实现(enforcedPlatform ... 的例子,如下例所示)

\n
dependencies {\n    kapt(enforcedPlatform("io.micronaut:micronaut-bom:$micronautVersion"))\n    kapt("io.micronaut:micronaut-inject-java")\n    kapt("io.micronaut:micronaut-validation")\n\n    implementation(enforcedPlatform("io.micronaut:micronaut-bom:$micronautVersion"))\n    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")\n    implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")\n    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinxCoroutinesVersion")\n    implementation("io.micronaut:micronaut-runtime")\n    implementation("io.micronaut.grpc:micronaut-grpc-server-runtime:$micronautGrpcVersion")\n    implementation("io.micronaut.grpc:micronaut-grpc-client-runtime:$micronautGrpcVersion")\n    implementation("io.grpc:grpc-kotlin-stub:${grpcKotlinVersion}")\n
Run Code Online (Sandbox Code Playgroud)\n

“kapt(enforcedPlatform”和“implementation(enforcedPlatform”)的目的是什么?我的问题是否应该与缺少 enforcedPlataform 之一有关?

\n

*** 编辑 1

\n

现在我得到了

\n
    Microsoft Windows [vers\xc3\xa3o 10.0.18363.1256]\n    (c) 2019 Microsoft Corporation. Todos os direitos reservados.\n    \n    C:\\_d\\toLearn\\demo-grpc-jaeger>gradle clean build --stacktrace\n    \n    > Task :kaptKotlin FAILED\n    C:\\_d\\toLearn\\demo-grpc-jaeger\\build\\tmp\\kapt3\\stubs\\main\\com\\tolearn\\DemoGrpcJaegerServiceGrpcKt.java:35: error: incompatible types: NonExistentClass cannot be converted to Annotation\n        @error.NonExistentClass()\n              ^\n    FAILURE: Build failed with an exception.\n    \n    * What went wrong:\n    Execution failed for task \':kaptKotlin\'.\n    > A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution\n       > java.lang.reflect.InvocationTargetException (no error message)\n    \n    * Try:\n    Run with --info or --debug option to get more log output. Run with --scan to get full insights.\n    \n    * Exception is:\n    org.gradle.api.tasks.TaskExecutionException: Execution failed for task \':kaptKotlin\'.\n            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:200)\n            at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)\n            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:198)\n            at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:179)\n            at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)\n            at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)\n            at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)\n            at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)\n            at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)\n            at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)\n            at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)\n            at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)\n            at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)\n\n ...\n            at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalAptCache.updateCache(IncrementalAptCache.kt:26)\n            at org.jetbrains.kotlin.kapt3.base.incremental.JavaClassCacheManager.updateCache(cache.kt:22)\n            at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:86)\n            at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:34)\n            at org.jetbrains.kotlin.kapt3.base.Kapt.kapt(Kapt.kt:45)\n            ... 31 more\n    \n    \n    * Get more help at https://help.gradle.org\n    \n    BUILD FAILED in 8s\n    8 actionable tasks: 8 executed\n    \n    C:\\_d\\toLearn\\demo-grpc-jaeger>\n
Run Code Online (Sandbox Code Playgroud)\n

有了这个 build.gradle

\n
plugins {\n    id("org.jetbrains.kotlin.jvm") version "1.4.10"\n    id("org.jetbrains.kotlin.kapt") version "1.4.10"\n    id("org.jetbrains.kotlin.plugin.allopen") version "1.4.10"\n    id("com.github.johnrengelman.shadow") version "6.1.0"\n    id("io.micronaut.application") version "1.2.0"\n    id("com.google.protobuf") version "0.8.13"\n}\n\nversion = "0.1"\ngroup = "com.tolearn"\n\nrepositories {\n    mavenCentral()\n    jcenter()\n}\n\nmicronaut {\n    testRuntime("junit5")\n    processing {\n        incremental(true)\n        annotations("com.tolearn.*")\n    }\n}\n\n///sf/answers/3895282401/\n//kapt {\n//    correctErrorTypes true\n//}\n\ndependencies {\n\n    //implementation("io.grpc:protoc-gen-grpc-kotlin:1.0.0")\n\n    implementation("io.micronaut:micronaut-validation")\n    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}")\n    implementation("org.jetbrains.kotlin:kotlin-reflect:${kotlinVersion}")\n    implementation("io.micronaut.kotlin:micronaut-kotlin-runtime")\n    implementation("io.micronaut:micronaut-runtime")\n    implementation("io.micronaut.grpc:micronaut-grpc-runtime")\n    implementation("javax.annotation:javax.annotation-api")\n    implementation("io.micronaut:micronaut-http-client")\n    implementation("io.micronaut:micronaut-tracing")\n\n    runtimeOnly("io.jaegertracing:jaeger-thrift")\n    runtimeOnly("ch.qos.logback:logback-classic")\n    runtimeOnly("com.fasterxml.jackson.module:jackson-module-kotlin")\n}\n\n\napplication {\n    mainClass.set("com.tolearn.ApplicationKt")\n}\n\njava {\n    sourceCompatibility = JavaVersion.toVersion("11")\n}\n\ntasks {\n    compileKotlin {\n        kotlinOptions {\n            jvmTarget = "11"\n        }\n    }\n    compileTestKotlin {\n        kotlinOptions {\n            jvmTarget = "11"\n        }\n    }\n\n\n}\n\nsourceSets {\n    main {\n        j

voi*_*zcy 8

从版本 0.2.0 开始,protoc-gen-grpc-kotlin 是一个 Jar,而不是依赖于平台的二进制文件(https://repo1.maven.org/maven2/io/grpc/protoc-gen-grpc-kotlin/1.0 .0/)。所以在你的protobuf配置块中,它应该是grpckt { artifact = "io.grpc:protoc-gen-grpc-kotlin:1.0.0:jdk7@jar"}.

(请注意,如果您没有指定工件扩展名,protobuf 插件将根据您的平台选择一个扩展名。)

implementation("io.grpc:protoc-gen-grpc-kotlin:1.0.0")另外,您的项目中可能不需要依赖项。