我有如下目录 模式/某些路径A / proto1.proto 模式/某些路径A / proto2.proto 模式/某些路径B / proto1.proto 模式/某些路径B / proto2.proto moduleA / pom.xml moduleB / pom.xml
这是我继承的东西,无法更改目录/编译结构。 在moduleA的pom.xml中,我需要编译(假设)pathA / proto1和pathB / proto1 在moduleB的pom.xml中,我需要编译(比如说)pathA / proto2和pathB / proto2
当前,所有开发人员都已安装protoc-2.5.0,并且我们的poms中具有执行上述操作的maven-antrun-plugin。 由于我被“强制”(在这里不想详细说明原因)在项目中的某个地方使用语法为proto3的proto文件,因此我需要protobuf-java版本3.x(我正在使用3.6.1)。似乎现有的用protoc-2.5编译的proto文件与此protobuf-java的3.x版本不兼容。 我已经遇到了表明这一点的问题。所以我想用protoc-3.6.1编译包括上述结构的整个项目。但是我不想强迫数百名开发人员在他们的机器上(包括我们的构建机器)安装protoc-3.6.1。因为现在这就是每个人的编译方式,所以maven-antrun-plugin只是在计算机上调用“ protoc”。 所以我想运行maven xolstice插件,以便立即下载protoc。 在这种背景下,我找不到使用maven xolstice插件选择并选择多个原始文件进行编译的方法。
我尝试了一下,没有花很多时间。 同样,即使我成功提供了多个目录,我仍然需要一种方法来选择目录中的特定原型文件。
请帮助!
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>${os.mvn.plugin.version}</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>${protobuf.mvn.plugin.version}</version>
<configuration>
<includeSourceInfoInDescriptorSet>true</includeSourceInfoInDescriptorSet>
<protoSourceRoot>${project.basedir}/../../schema/pathA/</protoSourceRoot>
<protoSourceRoot>${project.basedir}/../../schema/pathB/</protoSourceRoot>
<protocArtifact>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}</pluginArtifact>
<additionalProtoPathElements>
<additionalProtoPathElement>${project.basedir}/../../schema/src/main/proto</additionalProtoPathElement>
</additionalProtoPathElements>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>