在我的android应用中,我使用原始文件。例如,我有原始文件Stats.proto
syntax = "proto3";
package com.me.test;
message Stat {
string a = 1;
string b = 2;
string c = 3;
string d = 4;
}
我需要在每个原始文件本身中注册程序包,这很不舒服,因为我有很多文件。我想在gradle中注册默认包,例如“ package com.me.test”,它使用我创建的每个文件。我在javanano中发现了solution
nano {
proto {
// Selects between --java_out and --javanano_out, default is 'java'
mode 'javanano'
// Options added to --java_out or --javanano_out
option 'java_package=src/proto/simple-data.proto|my_package'
option 'java_outer_classname=src/proto/simple-data.proto|OuterName'
// Apply the 'grpc' plugin defined in protobufNativeCodeGenPluginDeps
plugin 'grpc' {
// Options added to --grpc_out
option 'nano=true'
}
}
但是我需要使用javalite
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.0.0'
}
plugins {
javalite {
artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
}
}
generateProtoTasks {
all().each { task ->
task.builtins {
remove java
}
task.plugins {
javalite { }
}
}
}
}
我想有类似的逻辑
option 'java_package=src/proto/simple-data.proto|my_package'
像javalite中的javanano
我可以实现吗?
答案 0 :(得分:1)
根据the doc,并假设javalite
支持与java
相同的功能(这很长一段时间,因为我在此插件上未找到任何文档痕迹),请尝试:
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.0.0'
}
plugins {
javalite {
artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
}
}
generateProtoTasks {
all().each { task ->
task.builtins {
remove java
}
task.plugins {
javalite {
option 'java_package=.......'
}
}
}
}
}
编辑:尝试以检查对象:
task.plugins {
javalite {
it.properties.each { println "$it.key -> $it.value" }
}
}