grpc-gradle与grpc流程完美整合(3)

按照之前文章的方法来自动自动生成proto的代码,然后手动从build复制到src代码中去,当执行gradle build编译的时候会抛错提示类重复,因为执行gradle build,这个命令依赖于gradle generateProto命令,也就是会生成两次相同的类文件,所以会抛出类重复。

修改build.gradle中的protobuf plugin的相关配置来自动将proto生成的代码放入到指定目录,达到完美整合。

protobuf {
    protoc {
        artifact = "com.google.protobuf:protoc:3.2.0"
    }
    plugins {
        grpc {
            artifact = 'io.grpc:protoc-gen-grpc-java:1.4.0'
        }
    }

    generatedFilesBaseDir = "src"

    generateProtoTasks {
        all()*.plugins {
            grpc {
                outputSubDir = "java"
            }
        }
    }
}

generatedFilesBaseDir将生成的代码放入到指定的目录,outputSubDir可以看做generatedFilesBaseDir下的指定目录。因为这两个参数都有默认目录路径,可以尝试修改之后再生成文件查看之间的差别。

分析一下官方所描述的:

Change where the generated files are
By default generated Java files are under generatedFilesBaseDir/ sourceSet/ builtinPluginName,where generatedFilesBaseDir is $buildDir/generated/source/proto by default, and is configurable. E.g.,

protobuf {
  ...
  generatedFilesBaseDir = "$projectDir/src/generated"
}

The subdirectory name, which is by default $builtinPluginName, can also be changed by setting the outputSubDir property in the builtins or plugins block of a task configuration within generateProtoTasks block (see previous section). E.g.,

{ task ->
  task.plugins {
    grpc {
      // Write the generated files under
      // "$generatedFilesBaseDir/$sourceSet/grpcjava"
      outputSubDir = 'grpcjava'
    }
  }
}

默认配置指定了生成文件的默认位置。按我们需求修改好之后,重新执行gradle clean generateProto会看到自动生成的文件到我们想要的目录了。

参考:

https://github.com/google/protobuf-gradle-plugin
https://stackoverflow.com/questions/32820728/simple-protobuf-compilation-with-gradle

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值