具有两个版本的 protobuf 的 Maven 多模块项目

maven multi-module project with two versions of protobuf

我们有一个多模块 Maven 项目。其中一个模块有一堆 .proto 个文件,我们将其编译为 java 个文件。几乎所有其他模块都依赖于此模块。他们中的大多数使用 Protobuf 2.4,但需要使用 2.5。

有什么好的方法吗? (不太好的方法是将 pom 文件编辑为“2.5”,构建一个 jar,手动将该 jar 复制到我们需要的任何地方,然后将 pom 文件更改回 2.4。)

从未使用过 protobuf,但据我所知,它是一个生成内容的插件。

所以我会给你一个通用的指导,希望它能对你有所帮助。 我认为您应该尝试从单个模块中使用不同的分类器制作 2 个 jar,请参阅 https://maven.apache.org/plugins/maven-jar-plugin/examples/attached-jar.html 例如分类器 proto2.4 和 proto2.5 然后您可以在定义该模块的依赖项时添加分类器。

我看到的其他选项是有 2 个模块,真正的一个,你现在有,另一个用于 2.5 从主模块生成一个 zip,第二个模块将是空的,但对生成的 zip 有依赖性,将其解压缩,然后使用 2.5 的插件配置进行编译 执行速度较慢,恕我直言,有点脏,但是如果您需要更多的自定义而不仅仅是版本,则可能需要。

我终于让事情或多或少地按照我想要的方式工作。我用一个 pom 文件创建了一个新模块;该pom文件引用了原始模块的proto文件,但是用proto2.5编译器编译它们并将结果放入它自己的目录中。