java - 使用 protobuf for java 时使用 gradle 重复处理策略错误

标签 java gradle protocol-buffers protobuf-java

我正在使用下面的配置 build.gradle

plugins {
    id "com.google.protobuf" version "0.8.17"
    id "java"
}

group "de.prerna.aws.tests"
version "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

ext {
  
    protobufVersion = "3.18.1"
}


dependencies {

    implementation "com.google.protobuf:protobuf-java:$protobufVersion"


sourceSets {
    main {
        proto {
            srcDir 'src/main/proto'
        }
        java {
            // include self written and generated code
            srcDirs 'src/main/java'
        }
    }
}

protobuf {
    protoc {

        artifact = 'com.google.protobuf:protoc:4.0.0-rc-2'
    }

    plugins {
        grpc {
            artifact = "io.grpc:protoc-gen-grpc-java:1.39.0"
        }
    }
    generateProtoTasks.generatedFilesBaseDir = 'generated-sources'

    generateProtoTasks {
        all().each { task ->
            task.plugins { grpc{} }
        }
        ofSourceSet('main')

    }
}

错误


* What went wrong:
Execution failed for task ':processResources'.
> Entry Person.proto is a duplicate but no duplicate handling strategy has been set. Please refer to https://docs.gradle.org/7.2/dsl/org.gradle.api.tasks.Copy.html#org.gradle.api.tasks.Copy:duplicatesStrategy for details.

最佳答案

BParolini 的变体对于 build.gradle (Groovy DSL)

tasks.withType(Copy) {
    filesMatching("**/*.proto") {
        duplicatesStrategy = DuplicatesStrategy.INCLUDE
    }
}

关于java - 使用 protobuf for java 时使用 gradle 重复处理策略错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69676587/

相关文章:

gradle - Gradle中的自定义任务和增强任务的概念有什么区别?

android - gradle:根据构建类型(或变体)执行代码

安卓NDK : How to build for ARM64-v8a with minimumSdkVersion = 19

java - 一个月中的第几天 - Java 日历

java - 无法解析属性 : userId. 用户名

java - 如何获取Jenkins创建的数据和时间

java - 与连接表中的类型单向关联

java - 将POJO转换为protocol buffer请求消息

c# - 在 VS 2017 中的预构建事件中使用 protoc 从 .proto 文件生成 c# 文件

go - 如何使用 ProtoBuf 下载文件