提问人:Mark VY 提问时间:6/8/2021 更新时间:6/16/2021 访问量:557
具有两个版本的 protobuf 的 Maven 多模块项目
maven multi-module project with two versions of protobuf
问:
我们有一个多模块的 maven 项目。其中一个模块有一堆文件,我们将其编译为 java 文件。几乎所有其他模块都依赖于此模块。他们中的大多数使用 Protobuf 2.4,但需要使用 2.5。.proto
有什么好方法可以做到这一点吗?(不太好的方法是将 pom 文件编辑为“2.5”,构建一个 jar,手动将该 jar 复制到我们需要的任何位置,然后将 pom 文件改回 2.4。
答:
0赞
nhu
6/8/2021
#1
从未使用过 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 的插件配置进行编译 执行速度较慢,恕我直言,有点脏,但例如,如果您需要更多的自定义而不仅仅是版本,则可能需要它。
评论
0赞
Mark VY
6/8/2021
但是,每当有变化时,我必须记住重新生成 zip 文件......嗯。。。
1赞
nhu
6/11/2021
好吧,它只是运行 Maven。使用程序集插件在正确的阶段生成 zip 文件
0赞
Mark VY
6/13/2021
是的,我承认这行得通......这有点尴尬,但它确实有效。
0赞
Mark VY
6/16/2021
#2
我终于让事情或多或少地按照我想要的方式工作。我只用一个 pom 文件创建了一个新模块;该 POM 文件引用了原始模块的 proto 文件,但使用 proto2.5 编译器编译它们并将结果放入自己的目录中。
评论