假设现在有一个maven多模块项目,controller在一个模块,service和dao在一个模块。现在一个模块的controller需要通过另一个模块的service来操作数据库。除了使用添加模块之间的依赖之外,还没有其他方式可以实现?小弟现在遇到了一种通过httpclient来调用的方式,不太懂。求高手帮小弟解惑。
解决方案
15
一个大项目里多个maven子项目间的调用,就应该是dependency方式,最终打包也是打出一个包来。
假如需要通过http交流,那应该属于两个项目,最终打包发布也是分开的了。
假如需要通过http交流,那应该属于两个项目,最终打包发布也是分开的了。
30
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模块)
本人相信你还应该有一个父模块才对啊。
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模块)
5
猜测lz描述的情况是:该通过httpclient去调用的模块是单独部署发布出去的。系统中某些模块在实际架构中基于某些考虑例如高可用高并发等会单独部署成服务,通过rpc等方式去调用。例如用户系统、订单系统等。
发布在同一个容器中的两个模块间没必要通过httpclient来调用。
发布在同一个容器中的两个模块间没必要通过httpclient来调用。