日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Maven3教程】Maven多工程、多模块

發布時間:2025/5/22 编程问答 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Maven3教程】Maven多工程、多模块 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

項目工程拆分原則?

? ? 功能分層拆分、業務功能拆分?下面一個電商項目(Jmall)為例:

功能分層拆分

????按照項目功能分層,分為common(java工程)、dao(java工程)、service(java工程)、web(web工程)等

?

業務功能拆分

????按照業務拆分,分為common工程(java工程)、用戶中心user(web工程)、商品中心goods(web工程)、訂單中心order(web工程)、總web(web工程)

????

總結對比:

隨著業務復雜的增加、按照功能分層的拆分,每個工程會越來越繁重,務必會達到瓶頸。但是按照業務功能的劃分,每個模塊功能都是一個完整的web功能可以獨立運行、開發、協作,同時又能合并成一個總的web的工程,使其組成一個平臺,隨著業務增加,可以重新拆分新的工程,更好的適應業務整合。推薦按照業務功能進行拆分

本人不善言辭,覺得我說的不對,可以參考其他優秀的項目,例如spring業務按找業務功能進行拆分,如下圖:

下面就開始以Jmall為例子按照業務劃分的原則,開始搭建maven多工程項目

首先創建一個父工程jmall(pom),用于管理

接下來創建common工程(java工程)

接下來構建user工程(web工程)

依此類推,構建好其他工程,如下圖所示:

其中需要注意的是jmall-web工程是用于其他工程合并成總工程的項目

構建好工程之后,首先Install一下,看是否成功:

測試jmall-common的依賴

在jmall-common中新建一個BaseTest的基類,如下圖:

在jmall-user工程調用BaseTest,如下圖:

首先需要添加jmall-common工程的依賴:

調用如下:

執行結果如下:

合并總的web工程

合并為一個總的web工程,需要借助maven-war-plugin的插件,如下圖所示:

需要添加工程依賴,如下圖:

jmall-web完整的pom.xml,如下:

<?xml version="1.0"?> <projectxsi: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>org.zhanghua</groupId><artifactId>jmall</artifactId><version>0.0.1-SNAPSHOT</version></parent><groupId>org.zhanghua</groupId><artifactId>jmall-web</artifactId><version>0.0.1-SNAPSHOT</version><packaging>war</packaging><name>jmall-web Maven Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>org.zhanghua</groupId><artifactId>jmall-user</artifactId><version>0.0.1-SNAPSHOT</version><type>war</type></dependency><dependency><groupId>org.zhanghua</groupId><artifactId>jmall-goods</artifactId><version>0.0.1-SNAPSHOT</version><type>war</type></dependency><dependency><groupId>org.zhanghua</groupId><artifactId>jmall-order</artifactId><version>0.0.1-SNAPSHOT</version><type>war</type></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies><build><finalName>jmall-web</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.6</version><configuration><overlays><overlay><groupId>org.zhanghua</groupId><artifactId>jmall-user</artifactId></overlay><overlay><groupId>org.zhanghua</groupId><artifactId>jmall-goods</artifactId></overlay><overlay><groupId>org.zhanghua</groupId><artifactId>jmall-order</artifactId></overlay></overlays></configuration></plugin><!-- jetty插件 --><plugin><groupId>org.mortbay.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>7.6.15.v20140411</version><configuration><connectors><connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"><port>9080</port></connector></connectors><webAppConfig><contextPath>/</contextPath></webAppConfig><systemProperties><systemProperty><name>org.mortbay.util.URI.charset</name><value>UTF-8</value></systemProperty></systemProperties></configuration></plugin></plugins></build> </project>

接下來,我們執行install,看jmall-web的war是否已經把jmall-user,jmall-user,jmall-goods,jmall-order工程合并進來了,如下圖:

如上圖所示,合并正確,符合我們的要求.

注意到index.jsp只有一個了,我們每個工程里面都會有index.jsp,但是最后只有一個了,是因為我們jmall-web工程里面有index,會這個jmall-web的為準。

總結:如果多個war相同路徑且同名的文件,如果總的web工程里面有,那么總的這個會覆蓋分支的,如果總的沒有,那么看合并的順序,保留第一個順序的文件。

最后通過jetty:run運行成功,如下圖:

代碼地址:http://git.oschina.net/auhgnahz/jmall?

?

轉載于:https://my.oschina.net/Auhgnahz/blog/724950

總結

以上是生活随笔為你收集整理的【Maven3教程】Maven多工程、多模块的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。