有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

maven Google Protobuf Java在互相“导入”原型文件时出现问题

我已经用java创建了一个示例maven项目,配置如下:

  • 我在我的pom中使用了下面的maven antrun插件。xml:

    &ltplugins&gt
            &ltplugin&gt
                &ltgroupId&gtorg.apache.maven.plugins&lt/groupId&gt
                &ltartifactId&gtmaven-antrun-plugin&lt/artifactId&gt
                &ltversion&gt1.7&lt/version&gt
                &ltexecutions&gt
                   &ltexecution&gt
                      &ltid&gtgenerate-sources&lt/id&gt
                      &ltphase&gtgenerate-sources&lt/phase&gt
                      &ltconfiguration&gt
                         &lttarget&gt
                            &ltecho&gtGenerate&lt/echo&gt
                            &ltpath id="proto.path"&gt
                               &ltfileset dir="src/main/java/com/xyz/zrtb/simulator/proto"&gt
                                  &ltinclude name="**/*.proto" /&gt
                               &lt/fileset&gt
                            &lt/path&gt
                            &ltpathconvert pathsep=" " property="proto.files" refid="proto.path" /&gt
                            &ltexec executable="protoc" failonerror="true"&gt
                               &ltarg value="--java_out=src/main/java" /&gt
                               &ltarg value="--proto_path=${project.basedir}/src/main/java/com/xyz/zrtb/simulator/proto/" /&gt
                               &ltarg line="${proto.files}" /&gt
                            &lt/exec&gt
                         &lt/target&gt
                         &ltsourceRoot&gtsrc/&lt/sourceRoot&gt
                      &lt/configuration&gt
                      &ltgoals&gt
                         &ltgoal&gtrun&lt/goal&gt
                      &lt/goals&gt
                   &lt/execution&gt
                &lt/executions&gt
             &lt/plugin&gt
          &lt/plugins&gt

注意:上述配置适用于普通原型文件,其中我的消息中没有任何“导入”语句或“对象作为变量”,但不适用于具有“导入”语句或“对象作为变量”的文件

下面是我正在使用的原型文件:

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) 个答案