我想从我的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插件,但我必须声明一个外部存储库才能使用它,这当前不是一个选项。
答案 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>