从 Maven 依赖项导入 .proto 文件?

问题描述 投票:0回答:1

这是我的 protoc jar 插件 -

<plugin>
            <groupId>com.github.os72</groupId>
            <artifactId>protoc-jar-maven-plugin</artifactId>
            <version>${protoc-maven-plugin.version}</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>

                    <configuration>
                        <protocVersion>${protobuf.version}</protocVersion>

                        <includeStdTypes>true</includeStdTypes>
                        <includeDirectories>
                            <include>src/main/resources</include>
                        </includeDirectories>
                        <inputDirectories>
                            <include>src/main/resources</include>
                        </inputDirectories>

                    </configuration>
                </execution>
            </executions>
        </plugin>

我想包含一些来自 Nexus 上可用的 Maven 存储库的导入语句 - 其中包含一堆 proto 文件及其 java 编译版本。它是一个包含原始文件的 jar。

如何将这些 proto 文件(打包在 jar 中)包含在 protoc 路径中,以便可以将 proto 文件导入到我当前的工作目录中?

问题是,当我 mavenize 我的项目时,导入始终失败 - 找不到 .proto 文件。

我的 proto 命令用作协议的一部分,看起来像 - protoc-jar: 执行: [C:\protocjar3624070738032398618 in\protoc.exe, -IC:\protocjar3624070738032398618\include, -IC:myproject\src\main esources,--java_out = C:\ myproject arget \ generated-sources,C:\ myproject \ somedummy.proto]

该命令无法访问我正在导入的 jar 的 com.custom.proto 包,并且我不确定要添加到上述配置中的 inputDirectories 设置中才能将此包包含在 protoc 命令中。

附注我可以使用此设置 true 来获取 google.protobuf 包文件。但是,它不适用于包括 proto 文件(非标准)的其他 Maven 依赖项

protocol-buffers protoc
1个回答
0
投票

尝试使用

includeMavenTypes
direct
添加
transitive
指令。该执行配置对我来说效果很好:

<execution>
   <phase>generate-sources</phase>
   <goals>
      <goal>run</goal>
    </goals>
    <configuration>
        <protocVersion>3.11.4</protocVersion>                                   
        <includeDirectories>
          <include>src/main/resources</include>
        </includeDirectories>
        <inputDirectories>
          <include>src/main/resources</include>
        </inputDirectories>
        <includeMavenTypes>transitive</includeMavenTypes>
    </configuration>
</execution>
© www.soinside.com 2019 - 2024. All rights reserved.