前言
項目的模塊化有利于任務分工,后期維護,易擴展,模塊還可以獨立成服務單獨部署等;
創建packaging類型為POM的父項目
我用的maven插件是m2e,相信大部分人在eclipse裝的也是m2e插件;廢話不說,直接開始:
菜單選擇新建maven project,注意選擇創建一個簡單工程,如下圖紅圈所示,因為我們要創建的是packaging類型為pom的maven項目,自帶的archetype里貌似沒有對應的類型,反正我是沒找到。
接著點擊next,在packaging選項里選擇pom,然后輸入必要的信息即可,如下圖:
這時候我們的pom.xml文件是這樣的:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.edu.hdu.mm</groupId> <artifactId>multi-module</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>multi-module</name> <description>multi module projects.</description> </project>
創建各個子模塊
這里打算簡單的創建一個web項目作為示例,按層劃分;其實復雜點的項目是可以劃分成多個子系統模塊、多個服務模塊,模塊之間的通信可以通過jms、webservice等方式。
那么,我們就開始簡單的創建common,dao,service,web幾個模塊吧, 這里,除了web模塊的packaging類型是war,其它的都是jar,也就是說,在創建這些模塊的時候,web模塊選擇的archetype為webapp,其它的選quickstart即可;
鼠標右鍵父工程,選擇創建maven module;
創建完各個模塊之后,父模塊與子模塊的POM配置文件如下,很好理解:
父模塊POM配置:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>cn.edu.hdu.mm</groupId> <artifactId>multi-module</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <name>multi-module</name> <description>multi module projects.</description> <modules> <module>multi-module-common</module> <module>multi-module-dao</module> <module>multi-module-service</module> <module>multi-module-web</module> </modules> </project>
其中的一個子模塊POM配置:
<?xml version="1.0"?> <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>cn.edu.hdu.mm</groupId> <artifactId>multi-module</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>multi-module-common</artifactId> <name>multi-module-common</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
配置各個模塊之間的依賴關系
在這個demo中,模塊之間的依賴關系如下:
web依賴service,service依賴dao,dao依賴common模塊;
配置依賴關系很簡單,比如我們需要在dao模塊里配置其依賴common模塊,只需在pom添加如下代碼片段,跟平時的添加依賴一樣:
<dependency> <groupId>${project.groupId}</groupId> <artifactId>multi-module-common</artifactId> <version>${project.version}</version> </dependency>
注意這里的${project.groupId}和${project.version}指的是本模塊的groupId和version,因為該模塊和multi-module-common模塊的共同父模塊為multi-module,其groupId和version都繼承自multi-module,所以我們這里直接寫本模塊的groupId和version即可。
開始開發程序
完成以上配置后,就可以開始開發我們的程序了,往common模塊寫一些公共的東西,dao模塊訪問數據源,service模塊業務需求,web可以寫一些jsp,action、controller等;
這里,我簡單的寫了個spring + spring mvc + mybatis的demo,添加了一個用戶增刪改查模塊,前端頁面就沒寫了~代碼見最后的鏈接。
工程目錄大致如下:
運行war包,調試等
代碼寫完之后,添加數據庫(腳本在工程里),然后可以在父工程的pom.xml文件里添加tomcat7-maven-plugin插件配置,右鍵執行tomcat:run命令,運行war包,也可以右鍵調試工程,debug As...
執行命令,可看到如下日志,通過日志可以看到具體的執行過程:
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] multi-module
[INFO] multi-module-common
[INFO] multi-module-dao
[INFO] multi-module-service
[INFO] multi-module-web Maven Webapp
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building multi-module 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> tomcat-maven-plugin:1.1:run (default-cli) @ multi-module >>>
[INFO]
[INFO] <<< tomcat-maven-plugin:1.1:run (default-cli) @ multi-module <<<
[INFO]
[INFO] --- tomcat-maven-plugin:1.1:run (default-cli) @ multi-module ---
[INFO] Skipping non-war project
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building multi-module-common 0.0.1-SNAPSHOT ..........................................
執行完命令后,瀏覽器地址輸入http://localhost:8080/multi-module-web/user/getUserList.do?pageNo=0&pageSize=5,訪問controller,訪問成功:
Demo源碼
如下是代碼,簡單的寫了下,僅供參考。
https://github.com/peterchenhdu/Demos/tree/master/multi-module
文章列表