Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有两个protobuf版本的maven多模块项目_Java_Maven_Language Agnostic_Protocol Buffers_Dependency Management - Fatal编程技术网

Java 带有两个protobuf版本的maven多模块项目

Java 带有两个protobuf版本的maven多模块项目,java,maven,language-agnostic,protocol-buffers,dependency-management,Java,Maven,Language Agnostic,Protocol Buffers,Dependency Management,我们有一个多模块maven项目。其中一个模块有一组.proto文件,我们将其编译为java文件。几乎所有其他模块都依赖于此模块。它们中的大多数使用Protobuf2.4,但需要使用2.5 有什么好办法吗?(不好的方法是编辑pom文件,说“2.5”,构建一个jar,手动将该jar复制到我们需要的任何地方,然后将pom文件更改回2.4。)从未使用protobuf,但据我所知,它是一个生成内容的插件 所以我会给你一个通用的指针,希望能有所帮助。 我认为您应该尝试从单个模块中使用不同的分类器制作2个ja

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


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

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

所以我会给你一个通用的指针,希望能有所帮助。 我认为您应该尝试从单个模块中使用不同的分类器制作2个jar,请参见 例如,分类器proto2.4和proto2.5 然后,您可以在定义对该模块的依赖关系时添加分类器

我看到的另一个选择是有两个模块,一个是真正的模块,你现在有了,另一个是2.5版 从主模块生成一个zip,第二个模块将为空,但依赖于生成的zip,将其解压缩,然后使用2.5版本的插件配置进行编译
执行速度较慢,imho有点脏,但如果您需要更多的定制而不仅仅是版本,则可能需要这样做。

我终于让事情或多或少按照我的意愿运行。我用一个pom文件创建了一个新模块;pom文件引用原始模块的proto文件,但使用proto2.5编译器编译它们,并将结果放入自己的目录。

下载libprotobuf 3,它支持“proto3”和“proto2”语法。从源代码重新编译代码,您将统一所有的proto,这样您就不需要任何手动技巧来编译它;我根本不使用proto3,我现在倾向于用所有的protos“复制”模块,但是我不需要复制protos,我需要新的pom引用它的孪生兄弟的protos。但是我必须记住,每当有什么变化时,我必须重新生成zip文件。。。嗯……好吧,这就是跑步马文。使用汇编插件在右边生成zip文件,我承认这是可行的。。。这有点尴尬,但确实有效。