使用maven构建多模块项目时,模块之间的调用问题。

guishi1991 2016-04-09 11:01:48
假如现在有一个maven多模块项目,controller在一个模块,service和dao在一个模块。现在一个模块的controller需要通过另一个模块的service来操作数据库。除了使用添加模块之间的依赖之外,还没有其他方式可以实现?小弟现在遇到了一种通过httpclient来调用的方式,不太懂。求大神帮小弟解惑。
...全文
33030 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
liubocsn 2018-12-20
  • 打赏
  • 举报
回复
用ribbon或者feign通信呀。
Maybetobeone 2018-12-14
  • 打赏
  • 举报
回复
feign通信啊
mukei1 2017-11-13
  • 打赏
  • 举报
回复
我现在通过dependency在模块a引入了另一个模块b,但模块a编译的时候说找不到模块b,这个怎么解决
siyifengling 2016-06-24
  • 打赏
  • 举报
回复
远程调用 相关的 hessian , dubbo 等等
曲奇丶 2016-06-24
  • 打赏
  • 举报
回复
找找远程调用的资料
qq_32052427 2016-06-23
  • 打赏
  • 举报
回复
web service项目?
xiaohuashenshou 2016-06-21
  • 打赏
  • 举报
回复
httpClient应该只和你的controller有关联,怎么可能使用httpClient去调用service呢,这明显是不成立的
chinapi_hzh 2016-06-21
  • 打赏
  • 举报
回复
猜测lz描述的情况是:该通过httpclient去调用的模块是单独部署发布出去的。系统中某些模块在实际架构中基于某些考虑比如高可用高并发等会单独部署成服务,通过rpc等方式去调用。比如用户系统、订单系统等。 发布在同一个容器中的两个模块间没必要通过httpclient来调用。
loveunittesting 2016-06-21
  • 打赏
  • 举报
回复
不要让他们耦合才对。
白虹李李 2016-04-11
  • 打赏
  • 举报
回复
maven多模块之间的调用也是通过dependency的,和调用其他外部的依赖没区别。 我相信你还应该有一个父模块才对啊。 1、如果没有父模块,是完全分离的多个模块,那么你只能先编译好底层的模块(比如你说的service模块为一个jar),然后再引入到controller模块中去(就和引用一个第三方的jar一样)。 通常的做法是建立一个本地仓库,编写service的团队写好后mvn install到本地仓库去 编写controller的团队在pom里正常引用这个service模块 2、如果是有一个父模块的,比如同时包括controller和service模块 在父模块的pom中声明子模块: <modules> <module>controller</module> <module>service</module> </modules> 在子模块中声明父模块: <parent> <groupId>xxxxx</groupId> <artifactId>xxxparent</artifactId> <version>1.0</version> </parent> 在你执行的时候,maven会自动去分析pom的关系,并确保service先编译(因为你的controller的pom中引用了service模块)
guishi1991 2016-04-11
  • 打赏
  • 举报
回复
求助啊,大神们
白虹李李 2016-04-11
  • 打赏
  • 举报
回复
如果没有依赖,那么应该是不能访问的。。。 你应该分析一下,另一个模块的service是否两个子模块都需要访问? 如果是的话,应该独立出来作为一个模块,在两个子模块中都依赖它。
guishi1991 2016-04-11
  • 打赏
  • 举报
回复
引用 3楼白虹李李 的回复:
maven多模块之间的调用也是通过dependency的,和调用其他外部的依赖没区别。 我相信你还应该有一个父模块才对啊。 1、如果没有父模块,是完全分离的多个模块,那么你只能先编译好底层的模块(比如你说的service模块为一个jar),然后再引入到controller模块中去(就和引用一个第三方的jar一样)。 通常的做法是建立一个本地仓库,编写service的团队写好后mvn install到本地仓库去 编写controller的团队在pom里正常引用这个service模块 2、如果是有一个父模块的,比如同时包括controller和service模块 在父模块的pom中声明子模块: <modules> <module>controller</module> <module>service</module> </modules> 在子模块中声明父模块: <parent> <groupId>xxxxx</groupId> <artifactId>xxxparent</artifactId> <version>1.0</version> </parent> 在你执行的时候,maven会自动去分析pom的关系,并确保service先编译(因为你的controller的pom中引用了service模块)
使用httpclinet可以访问在另一个模块的service吗?现在这个项目是这样,两个模块之间没有依赖,是用httpclinet调用的。不是很懂。
oh_Maxy 2016-04-09
  • 打赏
  • 举报
回复
一个大项目里多个maven子项目间的调用,就应该是dependency方式,最终打包也是打出一个包来。 如果需要通过http交流,那应该属于两个项目,最终打包发布也是分开的了。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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