Maven构建多模块项目

在使用Maven进行项目开发过程中,如果非要使用多模块开发的方式的话,如果按照各模块的功能来讲,可以分为web层,service层,dao层,base层,当然基本上也没有用到什么dao层,因为我们一般都会有一个baseDao,所以,直接在service层中调用baseDao就ok了。

因此我就简略的分为三层:

web层包含页面和样式以及处理页面请求的controller。

service层主要写处理请求的逻辑。

base主要是处理数据库的交互和一些基础操作类什么的。

 

项目结构如下:

 

 

其中demo-base1和demo-service1打成jar包,demo-web1打成war包。而demo-parent为它们的父模块打包成pom文件。

具体怎么构建这都是基础知识,网上资料太多了。

 

 

首先需要清楚的一点是:

当使用tomcat:run运行的web模块,默认以jar包的形式去仓库里面找demo-service1,如果不存在的话肯定会报异常。

因此某个模块需要运行之前,先通过install命令将相应的依赖安装到本地仓库,当然如果觉得一个个install带来的麻烦,我们一样直接通过父类

demo-parent的install,这样就可以将其下demo-base1,demo-service1,demo-web1都安装到本地仓库了。

 

 

但问题是在实际开发过程中,模块进行修改时很频繁的,如果一动就install一次的话,显然有些麻烦,同时还有一个潜在的问题就是因为被依赖的模块都是通过jar文件被引用的,都是class文件,没法调式。

 

如何保证修改模块的代码可以即时生效,并且可断点调式?。

 

 

将dmo-web1模块通过->project Facets->转成Dynamic Module,并配置Deployment Assembly中加入依赖的demo-servic1,和demo-base1。

 

如下图所示:

 

 

 

并且是在server 试图中将demo-web1部署到tomcat中,问题就可以解决了。

 

这样在无乱时通过运行demo-web1时如无论是修改了demo-base1或demo-service1都可以立即生效。

 

 

 

问题二:当开发完成需要打包到测试环境的的时候,如何保证是最新的代码?

解决方案1:通过Eclipse的Export直接将demo-web1导出,这样不适合多环境配置,需要在打包前改不同环境的配置文件(数据库配置什么的)。

解决方案二:通过demo-parent打包package,根据需要可以激活不同环境的 <profile>,只需打包的时候只需参数P,如测试换 package -Ptest什么的就ok。

 

 

 

附件包含源代码:demo-parent.rar

 

方法二:

其实在配置tomcat:run启动时,勾选配置Resolve workspace aritfacts就可以满足我们的需求,优先从本地工作空间中寻找依赖,这样就可以及时发现依赖模块的修改。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值