在项目管理的过程中,初期可能一个项目并不大,所以建立了一个独立的web项目,但随着项目的发展,业务功能越来越多,但从业务依赖的角度来说,却是可以划分为多项目的。于是需要将这个庞大的web项目拆分成一个个独立的子web项目。这样的好处是,代码按模块划分,代码独立打成war包后,可以独立部署,如果某应用访问量大的话,也可以独立出来做分布式应用。
以上是一般项目发展的历程,而这里我想说的是,在项目建立初期,就已经预见到了未来会是多项目依赖的这种情况,那在这个阶段,可以考虑直接划分为多个模块,而在打包的过程中直接构建成为一个war包来运行:
1、按模块划分,采用标准的svn目录结构创建多个web项目(各模块可以独立运行),一个common项目(各模块的公用模块,打成jar包)
2、为每个项目创建pom-{projectName}.xml,编写好相应的配置
3、选择其中一个项目,增加一个合并打包的配置pom-all.xml,增加如下配置:
1 < plugin >
1 < plugin >
2
<
artifactId
>maven-war-plugin
</
artifactId
>
3 < version >2.1.1 </ version >
4 < configuration >
5 < warSourceDirectory >src/main/WebContent </ warSourceDirectory >
6 < overlays >
7 < overlay >
8 < groupId >com.xyz </ groupId >
9 < artifactId >cms </ artifactId >
10 < excludes >
11 < exclude >WEB-INF/lib/* </ exclude >
12 < exclude >WEB-INF/web.xml </ exclude >
13 </ excludes >
14 </ overlay >
15 </ overlays >
16 </ configuration >
17 </ plugin >
18
19 < dependency >
20 < groupId >com.xyz </ groupId >
21 < artifactId >cms </ artifactId >
22 < version >1.0 </ version >
23 < type >war </ type >
24 < scope >runtime </ scope >
25 </ dependency >
3 < version >2.1.1 </ version >
4 < configuration >
5 < warSourceDirectory >src/main/WebContent </ warSourceDirectory >
6 < overlays >
7 < overlay >
8 < groupId >com.xyz </ groupId >
9 < artifactId >cms </ artifactId >
10 < excludes >
11 < exclude >WEB-INF/lib/* </ exclude >
12 < exclude >WEB-INF/web.xml </ exclude >
13 </ excludes >
14 </ overlay >
15 </ overlays >
16 </ configuration >
17 </ plugin >
18
19 < dependency >
20 < groupId >com.xyz </ groupId >
21 < artifactId >cms </ artifactId >
22 < version >1.0 </ version >
23 < type >war </ type >
24 < scope >runtime </ scope >
25 </ dependency >
4、举例:先运行mvn install -f pom-cms.xml
再运行mvn package -f pom-all.xml 即可