在項(xiàng)目管理的過(guò)程中,初期可能一個(gè)項(xiàng)目并不大,所以建立了一個(gè)獨(dú)立的web項(xiàng)目,但隨著項(xiàng)目的發(fā)展,業(yè)務(wù)功能越來(lái)越多,但從業(yè)務(wù)依賴的角度來(lái)說(shuō),卻是可以劃分為多項(xiàng)目的。于是需要將這個(gè)龐大的web項(xiàng)目拆分成一個(gè)個(gè)獨(dú)立的子web項(xiàng)目。這樣的好處是,代碼按模塊劃分,代碼獨(dú)立打成war包后,可以獨(dú)立部署,如果某應(yīng)用訪問(wèn)量大的話,也可以獨(dú)立出來(lái)做分布式應(yīng)用。
以上是一般項(xiàng)目發(fā)展的歷程,而這里我想說(shuō)的是,在項(xiàng)目建立初期,就已經(jīng)預(yù)見(jiàn)到了未來(lái)會(huì)是多項(xiàng)目依賴的這種情況,那在這個(gè)階段,可以考慮直接劃分為多個(gè)模塊,而在打包的過(guò)程中直接構(gòu)建成為一個(gè)war包來(lái)運(yùn)行:
1、按模塊劃分,采用標(biāo)準(zhǔn)的svn目錄結(jié)構(gòu)創(chuàng)建多個(gè)web項(xiàng)目(各模塊可以獨(dú)立運(yùn)行),一個(gè)common項(xiàng)目(各模塊的公用模塊,打成jar包)
2、為每個(gè)項(xiàng)目創(chuàng)建pom-{projectName}.xml,編寫(xiě)好相應(yīng)的配置
3、選擇其中一個(gè)項(xiàng)目,增加一個(gè)合并打包的配置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、舉例:先運(yùn)行mvn install -f pom-cms.xml
再運(yùn)行mvn package -f pom-all.xml 即可
技術(shù)文章收藏站點(diǎn)