本文經過一個例子來介紹利用maven來構建一個多模塊的jave項目。開發工具:intellij idea。html
1、項目結構
multi-module-PRoject是主工程,裏面包含兩個模塊(Module):java
- web-app是應用層,用於界面展現,依賴於web-service參的服務。
- web-service層是服務層,用於給app層提供服務。
2、構建項目
2.1 Parent Project
新建一個空白標準maven project(不要選擇Create from archetype選項)web
填寫項目座標編程
獲得一個標準的maven項目,由於該項目是做爲一個Parent project存在的,能夠直接刪除src文件夾。瀏覽器
2.2 增長web-app模塊(Module)
選擇從archetype建立(選擇webapp選項)app
groupId和version繼承自Parent project,這裏只須要填寫artifactId便可。webapp
2.3增長web-service模塊
用一樣的方法建立web-service模塊(不過該模塊是一個空白maven標準項目,不要從archetype建立)maven
2.4 得最終項目結構
2.5 關鍵幾點
- Parent project和各個Module擁有獨立pom文件,他們之間的關係後續會專門寫文章介紹。
- Parent project用於組織不一樣的Module,不實現邏輯
- Module集成Parent project的groupId和version,Module只須要指定本身的artifactId便可。
3、添加項目依賴
上面的操做是添加web-app對web-service模塊的依賴,完成上述操做後web-Service中public的類已經在web-app模塊中可見了。可是這個時候在app模塊使用了service模塊中的類,經過maven進行編譯(compile)的時候仍是會報錯XX找不到(XX爲service模塊的類),要解決這個問題須要在app的pom中增長對service的依賴:ide
<dependency> <groupId>com.cnblogs.kmpp</groupId> <artifactId>web-service</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
以上,項目依賴的添加已經完成工具
4、開始編程
4.1 web-service模塊編程
在web-service模塊中增長一個Service類(SimpleService.java)
4.2 web-app模塊編程
在web-app模塊增長一個Servlet,而且調用web-service模塊的SimpleService類的getServiceDescription方法。
4.3 配置Servlet
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>Simple</servlet-name> <servlet-class>com.cnblogs.kmpp.SimpleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Simple</servlet-name> <url-pattern>/simple-servlet</url-pattern> </servlet-mapping> </web-app>
5、運行
在web-app的pom中增長j2ee的依賴,以及jetty插件的依賴。運行jetty。詳情
在瀏覽器中輸入:http://localhost:8080/web-app/simple-servlet
獲得運行結果:
6、結束
至此,本文完整演示了使用maven構建多模塊項目