我已经在java中创建了一个示例maven项目,并具有以下配置:
<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>
注意:以上配置适用于我没有任何“导入”的普通原型文件。陈述或对象作为变量&#39;在我的消息中然而它不适用于具有“导入”的文件。陈述或对象作为变量&#39;。
以下是我使用的原型文件:
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.simulator.proto
的同一个包中以下是项目结构:
MyProject |------src/main/java (source folder) |------ com.xyz.zrtb.simulator.proto |------ com.xyz.zrtb.simulator.protos (for generated java files)
最重要的是解释了结构,我在运行maven generate-sources 时得到的错误如下:
[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.
我尝试了很多选项,但没有得到这项工作,请帮忙。它可能是一个&#39; - 原始路径&#39;问题。我已尝试过以下导入声明,但它无效: