您的位置:首页 > 其它

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

2017-07-24 23:54 211 查看
按照之前文章的方法来自动自动生成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,wheregeneratedFilesBaseDir 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 {

4000
// 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gradle grpc