在maven中generate-protobuf有2种方法
1是使用protobuf的maven插件,不过作者是开发的maven2的插件,而且有2年没更新了
所以我选择了第二种方法就是使用mavn的ant插件,整个配置和ant很像,稍作调整即可,具体配置如下
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>compile-protoc</id>
<phase>generate-sources</phase>
<configuration>
<tasks>
<mkdir dir="src/main/gen-java" />
<path id="proto.path">
<fileset dir="src/main/proto">
<include name="**/*.proto" />
</fileset>
</path>
<pathconvert pathsep=" " property="proto.files"
refid="proto.path" />
<exec executable="protoc">
<arg value="--java_out=src/main/gen-java" />
<arg value="-I${project.basedir}/src/main/proto" />
<arg line="${proto.files}" />
</exec>
</tasks>
<sourceRoot>src/main/gen-java</sourceRoot>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
生命周期绑定在generate-sources下,只要执行maven generate-sources就可以了
proto文件按照maven的规范放在src/main/proto文件夹下,最终生成的java文件在src/main/gen-java下
有自动生成的文件就要有自动删除
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<configuration>
<verbose>true</verbose>
<filesets>
<fileset>
<directory>src/main/gen-java</directory>
</fileset>
</filesets>
</configuration>
</plugin>
执行maven clean时同时删除gen-java文件夹