如何使用Maven Xolstice插件从多个目录编译特定的Proto文件

时间:2019-03-22 13:02:19

标签: maven protocol-buffers maven-plugin protoc

我有如下目录 模式/某些路径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>

0 个答案:

没有答案