Eri*_*man 5 java protocol-buffers maven protoc
我一直在尝试使用 protobuf 类型google.protobuf.Timestamp,protoc-jar-maven-plugin但只得到这些编译时错误:
google/protobuf/timestamp.proto: File not found.
test.proto: Import "google/protobuf/timestamp.proto" was not found or had errors.
test.proto:9:5: "google.protobuf.Timestamp" is not defined.
Run Code Online (Sandbox Code Playgroud)
proto 文件如下所示:
syntax = "proto3";
import "google/protobuf/timestamp.proto";
package test;
option java_package = "test";
message TestTimestamp {
google.protobuf.Timestamp liveStartDate = 1;
}
Run Code Online (Sandbox Code Playgroud)
而pom文件有如下配置:
<build>
<plugins>
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.6.0.1</version>
<executions>
<execution>
<id>protoc.main</id>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<protocVersion>3.6.0</protocVersion>
<addSources>main</addSources>
<includeDirectories>
<include>src/main/protobuf</include>
</includeDirectories>
<inputDirectories>
<include>src/main/protobuf</include>
</inputDirectories>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
据我了解,这种类型是 proto3 的一部分,为什么会出现这些错误?
事实证明,由于这种类型不是标准类型之一,Maven 插件需要额外的配置才能使其工作,即 <includeMavenTypes>direct</includeMavenTypes>参数,如下所示:
<build>
<plugins>
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.6.0.1</version>
<executions>
<execution>
<id>protoc.main</id>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<protocVersion>3.6.0</protocVersion>
<addSources>main</addSources>
<includeMavenTypes>direct</includeMavenTypes>
<includeDirectories>
<include>src/main/protobuf</include>
</includeDirectories>
<inputDirectories>
<include>src/main/protobuf</include>
</inputDirectories>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
有了这个配置,proto 文件就编译好了。
| 归档时间: |
|
| 查看次数: |
1873 次 |
| 最近记录: |