导出接口和参数bean给第三方,大家都是怎么操作的?

berg369 2020-02-06 12:03:24
导出接口和参数bean给第三方,或者微服务中把需要调用的接口和参数Bean放到一个公共包中,打成一个api的jar包供第三方或其它微服务调用,大家是怎么操作的呢?
因为每个微服务都是一个独立的git-maven项目,这些service接口和dto类在git项目中管理,每次修改都要手工复制到一个公共包感觉很笨,大家有没有好的实践?这个公共包也是一个独立的git-maven项目,只是代码来自于各个微服务组件。
还有一点是代码的组织,大概这样:
com.xxxx.service
com.xxxx.service.impl
com.xxxx.dto
只需要把service接口和dto类复制到公共包,impl实现类不需要,这用maven插件发布似乎会把impl也发布过去。
...全文
315 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2020-02-10
  • 打赏
  • 举报
回复
从你的描述来看,不同的项目只是使用部分不同的接口,并不是不同的项目都是用统一的接口,所以谈不上公共接口。那你这公共接口要打算如何发布?你打包给第三方是全打包还是部分打包?
如果你只是想把这些接口作为一个大工程管理,不同的项目使用这个接口大工程的不同的包,那你可以把每个微服务工程划分出一个子模块,该子模块直接引用接口大工程的某个包。比如是git管理的话,可以用git submodule指定引用接口大工程的某个子文件夹,这个子模块提交更新就会直接反映到接口大工程里了。
berg369 2020-02-10
  • 打赏
  • 举报
回复
明白了,因为我们是微服务组件在先,后来抽取需要对外发布的复制到公共接口工程,所以造成存在两份源码问题,其实原组件可以移除了,只要涉及公共的都放到公共接口工程中。 但是这样的话,如果微服务组件有几百个(不同客户项目的积累),但是具体一个客户项目只用到十几个,但是这些公共接口就会越来越大,而且更新频次极高,所有微服务组件都要依赖它,本组件常用的基础类如果也是方法参数,也会放到公共接口工程中,感觉很奇怪。所以我总是想是否可以还是放在原组件中,有个什么机制可以自动向公共接口工程同步
berg369 2020-02-07
  • 打赏
  • 举报
回复
是用maven,但是接口和dto代码在微服务工程和这个公共的接口工程各有一份,需要手工复制到公共接口工程再发布到maven仓库。每个微服务工程由不同的开发者开发,公共的接口工程他们都要来维护,经常会出现不一致
qybao 2020-02-07
  • 打赏
  • 举报
回复
引用 4 楼 berg369 的回复:
我们现在就是这样做的,这个工程包括了所有其它工程的接口和dto,是复制进来的,每次修改工程中的接口和dto还要再来手工更新这个共享工程,不知有没有自动化的方法。

如果是maven管理的话,每次修改完后重新发布到maven仓库,其他工程都从maven仓库取最新依赖包就好了
berg369 2020-02-07
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
把接口和dto类做成一个独立的工程,打包成jar 其他工程直接引用这个jar包
我们现在就是这样做的,这个工程包括了所有其它工程的接口和dto,是复制进来的,每次修改工程中的接口和dto还要再来手工更新这个共享工程,不知有没有自动化的方法。
qybao 2020-02-07
  • 打赏
  • 举报
回复
接口和dto只放在公共接口工程里,单独发布jar包,微服务工程只是到导入依赖包,不需要复制一份源代码到工程,微服务工程发布的时候也只需要发布自己工程的东西就可以了。微服务工程的开发者想修改接口或dto也可以,只需要修改公共接口工程就好了,修改完后重新发布包到仓库。
当然,这是项目管理的问题,也没什么正确标准,关键是管理有效率,我觉得你这个接口公共工程可以有个专门的小组负责,微服务开发组需要改接口时向专门小组申请,由专门小组修改后再发布新包。(当然,各个微服务组git协作开发也可以)
qybao 2020-02-06
  • 打赏
  • 举报
回复
如果是maven的话,可以修改配置文件<includes>下的内容或者用<executions>
具体配置例子可以自己网上搜一下
qybao 2020-02-06
  • 打赏
  • 举报
回复
如果是已经有了工程,只是想把部分class打包,如果是eclipse的话,用它自带的export菜单就可以,可以选择包和类,选中的才会export
qybao 2020-02-06
  • 打赏
  • 举报
回复
把接口和dto类做成一个独立的工程,打包成jar
其他工程直接引用这个jar包

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧