Jul*_*and 12 java protocol-buffers maven
我目前管理一些单独的Maven项目,其中我使用Protobufs作为序列化格式并通过线路.我正在使用David Trott的maven-protoc插件在编译时生成代码.
一切都很好,直到我希望这些项目彼此之间进行通信 - 或者更确切地说,使用彼此的protobufs.protobuf语言有一个"导入"指令,可以完成我想要的操作,但是我面临的挑战是让项目A导出一个".proto"文件(或者可能是一些中间格式?),以供项目B依赖.
Maven提供了一种项目捆绑资源的方法,但是AFAIK,这些是在运行时由代码使用,而不是在编译/源代码生成阶段由目标使用 - 至少我找不到描述的文档我想要实现的目标.
我找到了另一种方法,它不涉及任何Maven魔法.深入了解maven-protoc插件的代码,我发现这是一个受支持的用例 - 插件将在依赖的jar中查找并收集和.proto文件,并将它们解压缩到一个临时目录中.然后将该目录设置为protoc调用的导入路径.
所有需要发生的事情都是将.proto文件包含在依赖项的包中,我将其作为一种资源:
项目/ A/src目录/主/资源/ a.proto
现在在projects/b/pom.xml中,添加'a'作为常规Maven依赖项,只需从b.proto导入a.proto,就好像它存在于本地:
b.proto:import"a.proto";
这并不理想,因为文件名可能会在各个项目之间发生冲突,但这种情况应该很少发生.
您可以将 .proto 文件打包在生成它们的项目中的单独 .jar/.zip 中,并使用专用分类器将它们发布到存储库中。使用程序集插件可能有助于发布类似于在发布期间构建的“源 jar”的东西。
然后,在使用它们的项目上,添加先前创建的工件作为依赖项。使用具有“解包依赖项”目标的依赖项插件,并将其绑定到“编译”之前的阶段。
| 归档时间: |
|
| 查看次数: |
3161 次 |
| 最近记录: |