maven Google Protobuf Java在互相“导入”原型文件时出现问题
我已经用java创建了一个示例maven项目,配置如下:
- 我在我的pom中使用了下面的maven antrun插件。xml:
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.7</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <configuration> <target> <echo>Generate</echo> <path id="proto.path"> <fileset dir="src/main/java/com/xyz/zrtb/simulator/proto"> <include name="**/*.proto" /> </fileset> </path> <pathconvert pathsep=" " property="proto.files" refid="proto.path" /> <exec executable="protoc" failonerror="true"> <arg value="--java_out=src/main/java" /> <arg value="--proto_path=${project.basedir}/src/main/java/com/xyz/zrtb/simulator/proto/" /> <arg line="${proto.files}" /> </exec> </target> <sourceRoot>src/</sourceRoot> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins>
注意:上述配置适用于普通原型文件,其中我的消息中没有任何“导入”语句或“对象作为变量”,但不适用于具有“导入”语句或“对象作为变量”的文件
下面是我正在使用的原型文件:
a.proto:
option java_package = "com.xyz.zrtb.simulator.protos";
option java_outer_classname = "A";
message a {
optional string id = 1;
optional string name = 2;
repeated string cat = 4;
optional string domain = 3;
}
b.proto:
option java_package = "com.xyz.zrtb.simulator.protos";
option java_outer_classname = "b";
import "a.proto";
message b {
optional string id = 1;
optional string name = 2;
optional string domain = 3;
repeated string cat = 4;
optional string page = 5;
optional string ref = 6;
optional A a = 7;
}
这些原型文件位于名为com的同一个包中。xyz。zrtb。模拟器。原型
项目结构如下:
MyProject |------src/main/java (source folder) |------ com.xyz.zrtb.simulator.proto |------ com.xyz.zrtb.simulator.protos (for generated java files)
首先解释了结构,我在运行maven生成源代码时遇到的错误如下所示:
[INFO] --- maven-antrun-plugin:1.7:run (generate-sources) @ myproject-web --- [INFO] Executing tasks main: [echo] Generate [exec] site.proto:13:14: "A" is not defined.
我尝试了很多选择,但没有得到这项工作,请帮助。这可能是一个“原始路径”问题。我尝试了以下导入语句,但不起作用:
- 导入“com/xyz/zrtb/simulator/proto/a.proto”
- 导入“src/main/java/com/xyz/zrtb/simulator/proto/a.proto”
- 导入“MyProject/src/main/java/com/xyz/zrtb/simulator/proto/a.proto”
共 (0) 个答案