Использование protobuf с Gradle (IntelliJ) - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь сгенерировать код для простого протобуфа пример , используя инструкции по сборке, приведенные здесь . Я пытался некоторое время, но я не могу увидеть автоматически сгенерированный код в моем исходном корне.

Вот мой 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

Вещи, которые я пробовал

  • Синхронизировать инструмент Gradle в IntelliJ. Это самое выдающееся решение
    дано в SO

  • Настройка инструментов сборки -> Gradle -> Runner -> Delelgate IDE build / run действия на gradle to true

  • Чистая перестройка проекта gradle.

Из моего понимания поста GitHub, когда вы используете плагин protobuf, заглушка будет автоматически сгенерирована для вас. Чего мне не хватает?

1 Ответ

0 голосов
/ 07 ноября 2018

Вы применили плагин идеи, но не настроили его. Вам нужно указать плагину идеи, куда включать сгенерированный исходный код.

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

Вы можете посмотреть полный пример файла сборки здесь: build.gradle

...