如何从maven中的protoc生成多个类?

时间:2014-02-28 08:13:06

标签: java maven protocol-buffers

我想从我的maven文件中执行protoc(protobuffer编译器)。我在pom.xml中嵌入了一个ant任务,如下所示

<executions>
  <execution>
      <id>generate-sources</id>
      <phase>generate-sources</phase>
      <configuration>
         <tasks>
           .... <!-- I have several of these blocks - how can I reduce them to one? -->
           <exec executable="protoc/protoc.exe">
              <arg value="--java_out=target/generated-sources"/>
              <arg value="src/main/protos/Proto1.proto"/>
              <arg value="--proto_path=src/main/protos"/>
           </exec>
           <exec executable="protoc/protoc.exe">
              <arg value="--java_out=target/generated-sources"/>
              <arg value="src/main/protos/Proto2.proto"/>
              <arg value="--proto_path=src/main/protos"/>
          </exec>
        .....
       </tasks>
       <sourceRoot>target/generated-sources</sourceRoot>
     </configuration>
     <goals>
       <goal>run</goal>
     </goals>
   </execution>

如何定义循环或其他东西,以便maven遍历目录中的所有文件?

我知道有一个protobuffer maven插件,但我必须声明一个外部存储库才能使用它,这当前不是一个选项。

1 个答案:

答案 0 :(得分:3)

您需要应用ant ant任务。将exec列表替换为:

<apply executable="protoc/protoc.exe" parallel="false">
  <arg value="--java_out=target/generated-sources"/>
  <srcfile/>
  <arg value="--proto_path=src/main/protos"/>
  <fileset dir="${basedir}/src/main/protos" includes="*.proto"/>
</apply>

http://ant.apache.org/manual/Tasks/apply.html