java - 将 protobuf 与 Gradle (IntelliJ) 结合使用

标签 java gradle intellij-idea protocol-buffers

我正在尝试为简单的 protobuf example 生成代码使用给出的构建指令 here 。我已经尝试了一段时间,但我无法在源根目录中看到任何自动生成的代码。

以下是我的build.gradle文件

buildscript {
    ext {
        springBootVersion = '2.0.4.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath "io.spring.gradle:dependency-management-plugin:1.0.3.RELEASE"
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.5'
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'com.google.protobuf'

group = 'io.ai.vivid'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencyManagement {
    imports {
        mavenBom 'com.amazonaws:aws-java-sdk-bom:1.11.228'
    }
}

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:3.5.1-1"
    }

    generateProtoTasks.generatedFilesBaseDir = 'generated-sources'

    plugins {
        grpc {
            artifact = 'io.grpc:protoc-gen-grpc-java:1.14.0'
        }
    }
    generateProtoTasks {
        all()*.plugins {
            grpc {}
        }
    }
}

dependencies {
    compile 'io.grpc:grpc-netty-shaded:1.14.0'
    compile 'io.grpc:grpc-protobuf:1.14.0'
    compile 'io.grpc:grpc-stub:1.14.0'
}

还在我的 build.gradle 文件中,IntelliJ 提示它无法解析名称 protobuf

我尝试过的事情

  • 在 IntelliJ 中同步 gradle 工具。这是最突出的解决方案
    在 SO 中给出

  • 设置构建工具 -> Gradle -> Runner -> Delelgate IDE 构建/运行 gradle 上的操作为 true

  • 干净地重建 gradle 项目。

根据我对GitHub帖子的理解,当你使用protobuf插件时,会自动为你生成 stub 。我错过了什么?

最佳答案

您已经应用了idea插件,但没有配置它。您需要告诉idea插件在哪里包含生成的源代码。

protobuf {
    generatedFilesBaseDir = "$projectDir/src/generated"
}
idea {
    module {
        sourceDirs += file("${projectDir}/src/generated/main/java");
        sourceDirs += file("${projectDir}/src/generated/main/grpc");
    }
}

你可以看看 此处有构建文件的完整示例:build.gradle

关于java - 将 protobuf 与 Gradle (IntelliJ) 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52058851/

相关文章:

java - 配置数据源失败 : Intellij Error when connecting Database to Spring Application

java - 如何避免 Selenium 中的 "StaleElementReferenceException"?

java - 缩放cassandra流错误(空指针异常)

java - 更改Gradle构建目录的组织方式

scala - 在 Spark 集群中运行用 Scala 编写的 Spark 代码

scala - Intellij Idea scala 插件使用什么 scala 版本?

java - .jar 文件无法运行? (我觉得我错过了一些明显的东西,在来这里之前自己寻找解决方案。)

java - 编码和未编码的对象

android - 将项目导入Android Studio后同步时出错:找不到com.android.tools.build:gradle:4.0.1

Gradle 仅在 CI 工作期间提示缺少 jar