本文共 1482 字,大约阅读时间需要 4 分钟。
按照之前文章的方法来自动自动生成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会看到自动生成的文件到我们想要的目录了。
参考:
转载地址:http://pmrgi.baihongyu.com/