Maven构建多模块项目

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

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

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

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

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

 

项目结构如下:

 

Maven构建多模块项目_第1张图片

 

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

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

 

 

首先需要清楚的一点是:

当运行的模块如果存在依赖的话都会去仓库取,如果不存在的话肯定会报异常。因此我们要运行demo-service1或demo-web1的话,必须先通过install命令将demo-base1安装到本地仓库,当运行demo1-web1时同样需要先安装demo-service1到本地仓库,为解决一个个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。

 

如下图所示:

 

Maven构建多模块项目_第2张图片

 

 

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

 

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

 

如果是通过配置tomcat:run的方式这样依然会去本地仓库中找依赖,不安装还送没效果的!!!!!。

 

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

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

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

 

 

 

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

你可能感兴趣的:(maven,打包,分模块开发)