Kyl*_*lar 6 protocol-buffers gradle
我有一个创建一组 protobuf 对象和 GRPC 存根的项目。
我依赖于一个包含其他 .proto 文件的 jar,我想在我的项目中使用它。
IE:
project-abc-0.0.1.jar 包含一个文件:/some-types.proto 它包含以下部分:
package foo_companyname;
message StatusItem {
string status = 1;
string statusDescription = 2;
}
Run Code Online (Sandbox Code Playgroud)
我的项目有一个 build.gradle 文件,我试图像这样导入它:
buildscript {
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.3'
}
}
dependencies {
compile(group: 'com.companyname', name: 'project-abc', version: '0.0.1')
}
Run Code Online (Sandbox Code Playgroud)
然后,在我的新“enhanced-status.proto”中,我这样做:
import "foo_companyname/some-types.proto";
message EnhancedStatus{
string author = 1;
repeated StatusItem status = 2;
}
Run Code Online (Sandbox Code Playgroud)
如果我不引用其他 .proto,一切正常 - 我能够生成所有正确的 java 任何 python 类。一旦我添加它,我就会得到这个:
Execution failed for task ':generateProto'.
> protoc: stdout: . stderr: foo_companyname/some-types.proto: File not found.
enhanced-status.proto: Import "foo_companyname/some-types.proto" was not found or had errors.
enhanced-status.proto:26:19: "StatusItem" is not defined.
Run Code Online (Sandbox Code Playgroud)
我假设有一些技巧可以让 gradle 或 protoc 找到 jar 文件中的 .proto 源?或者我是否需要将 jar 文件的 .proto 提取到我自己的 /proto 目录中?这会导致冲突,因为 jar 已经有 some-types.proto 的编译版本,我不想再次编译它。
小智 7
使用 google protobuf gradle 插件
plugins {
id 'com.google.protobuf' version "0.8.5"
}
Run Code Online (Sandbox Code Playgroud)
您应该只需要在依赖项块中指定您的依赖 jar(即,作为“protobuf”依赖项,而不是“编译”):
dependencies {
protobuf "com.companyname:project-abc:0.0.1"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5731 次 |
| 最近记录: |