摘要:如果子模塊不聲明依賴的使用,即使該依賴在父中的中聲明了,也不會產(chǎn)生任何效果。
不管eclipse有沒有被被時代拋棄,反正是被我拋棄了,因?yàn)镮DEA是真的好用
現(xiàn)在公司的項(xiàng)目基本都是基于maven的多module項(xiàng)目,controller,service,model,dao等都被分成了不同的module,這樣做當(dāng)然也是為了解耦。
這些module可根據(jù)需要在pom.xml配置來打成war包或者jar包
jar
web主項(xiàng)目設(shè)置packaging級別為war,dao、model這些module設(shè)置packaging級別為jar。
module之間可以通過module自己的pom.xml來進(jìn)行相互引用或依賴,如:
cn.com.autohome.mall mall-common cn.com.autohome.mall mall-api-model
這樣在 File -> project structure 下,選中主web項(xiàng)目
從上面的截圖可以看出來依賴的第三方j(luò)ar和依賴項(xiàng)目子module的區(qū)別。
maven在執(zhí)行install,packaging是jar的會被打成jar放在target目錄下,packaging是war的會被打成war放在target目錄下。
另外兩個target目錄會有一點(diǎn)區(qū)別,war的target目錄會多出來一個和module同名的文件夾,這個文件夾和war解壓后完全一致。
所有依賴的jar(包括依賴的module,被打成jar)都會被放lib下
這樣在部署的時候,只需要部署相應(yīng)的war即可。
多個module不需要分別執(zhí)行mvn命令,可以使用聚合(aggregator)來一次構(gòu)建全部模塊
modules
在父pom.xml中通過
mall-common mall-api-model
來引用所有需要構(gòu)建的子模塊
parent
繼承,和java中的繼承相當(dāng),作用就是復(fù)用
場景
若每個子模塊都都用的了spring,那么我們是不是每個子模塊都需要多帶帶配置spring依賴了?這么做是可以的,但是我們有更優(yōu)的做法,那就是繼承,用parent來實(shí)現(xiàn)。
實(shí)現(xiàn)
父(account-aggregator)pom.xml
mall-common mall-api-model ······ org.springframework spring-core 4.0.2.RELEASE junit junit 4.7 test
子pom.xml
xx.xx.xx aggregator 1.0.0-SNAPSHOT ../pom.xml javax.mail 1.4.3 com.icegreen greenmail 1.4.1 test
依賴管理
繼承可以消除重復(fù),那是不是就沒有問題了? 答案是存在問題,假設(shè)將來需要添加一個新的子模塊util,只是提供一些簡單的幫助工具,不需要依賴spring、junit,那么繼承后就依賴上了,有沒有什么辦法了?
有,maven已經(jīng)替我們想到了,那就是dependencyManagement元素,既能讓子模塊繼承到父模塊的依賴配置,又能保證子模塊依賴使用的靈活性。在dependencyManagement元素下得依賴聲明不會引入實(shí)際的依賴,不過它能夠約束dependencies下的依賴使用。
在父pom.xml中配置dependencyManagement元素
mall-common mall-api-model ······ org.springframework spring-core 4.0.2.RELEASE
子pom.xml
org.springframework spring-core org.springframework spring-beans org.springframework spring-context org.springframework spring-context-support junit junit org.springframework spring-jdbc 4.0.2.RELEASE com.alibaba druid 1.0.16
使用這種依賴管理機(jī)制似乎不能減少太多的POM配置,就少了version(junit還少了個scope),感覺沒啥作用呀;其實(shí)作用還是挺大的,父POM使用dependencyManagement能夠統(tǒng)一項(xiàng)目范圍中依賴的版本,當(dāng)依賴版本在父POM中聲明后,子模塊在使用依賴的時候就無須聲明版本,也就不會發(fā)生多個子模塊使用版本不一致的情況,幫助降低依賴沖突的幾率。如果子模塊不聲明依賴的使用,即使該依賴在父POM中的dependencyManagement中聲明了,也不會產(chǎn)生任何效果。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71838.html
摘要:創(chuàng)建項(xiàng)目點(diǎn)擊創(chuàng)建項(xiàng)目,點(diǎn)擊下一步填寫組名項(xiàng)目項(xiàng)目版本填寫本地項(xiàng)目和目錄名稱,點(diǎn)擊創(chuàng)建好的項(xiàng)目目錄結(jié)構(gòu)如下一般多模塊開發(fā)中父模塊都是不帶目錄的,手動刪除目錄,刪除之后的目錄如下至此父模塊已經(jīng)創(chuàng)建完成。 公司的項(xiàng)目使用idea進(jìn)行maven的多模塊開發(fā),由于接觸intellij Idea沒有多長時間,對好多功能都不太清楚,就在網(wǎng)上瀏覽帖子學(xué)習(xí),在此過程中總感覺帖子寫的不夠詳細(xì),在途中踩了很...
摘要:最近在做某在線教育平臺網(wǎng)站的開發(fā),按師兄的建議要用來搞。現(xiàn)在把開發(fā)過程中的一些相關(guān)經(jīng)驗(yàn)貼出來。事先聲明,請確保和都已經(jīng)安裝好。對于不使用的開發(fā)者,可以直接建一個簡單的項(xiàng)目。使用的話,請按照圖進(jìn)行操作。 訪問GitHub下載最新源碼:https://github.com/gaussic/Sp... 文章已針對IDEA 2016做了一定的更新,部分更新較為重要,請重新閱讀文章并下載最新源碼...
摘要:最后運(yùn)行,如下圖所示,就說明跑通了總結(jié)之前看別人的博客,有選擇項(xiàng),自己弄死活跑不通。選擇那項(xiàng),啥都不選選擇那項(xiàng)。還要注意打包方式,,, 一.工程目錄 下面是搭建之后的目錄showImg(https://segmentfault.com/img/remote/1460000015755454?w=407&h=467); 先看一下目錄關(guān)系 taotao-parent(父工程管理jar包的版...
摘要:搭建多模塊項(xiàng)目備注所有項(xiàng)目都在中創(chuàng)建創(chuàng)建項(xiàng)目刪除目錄,只保留根目錄可被子模塊繼承因此項(xiàng)目只是未考慮太多性能問題所以將諸多依賴都寫在根級,子模塊只需繼承就可以使用。 Maven 搭建spring boot多模塊項(xiàng)目 備注:所有項(xiàng)目都在idea中創(chuàng)建 1.idea創(chuàng)建maven項(xiàng)目 1-1: 刪除src,target目錄,只保留pom.xml 1-2: 根目錄pom.xml可被子...
摘要:旨在記錄自己的學(xué)習(xí)過程,方便日后遇到問題是及時查閱復(fù)習(xí),另一方面也希望能幫助像筆者一樣從來沒使用過的人快速熟悉。 這篇文章主要記錄的是本人學(xué)習(xí)使用IntelliJ IDEA的筆記,可能不是特別的詳細(xì)。旨在記錄自己的學(xué)習(xí)過程,方便日后遇到問題是及時查閱復(fù)習(xí),另一方面也希望能幫助像筆者一樣從來沒使用過IDEA的人快速熟悉IDEA。文章錯誤之處還請各位大佬批評指正。(文末有本人的微信公眾號,...
閱讀 1769·2021-11-24 09:39
閱讀 1695·2021-11-22 15:22
閱讀 1019·2021-09-27 13:36
閱讀 3276·2021-09-24 10:34
閱讀 3348·2021-07-26 23:38
閱讀 2641·2019-08-29 16:44
閱讀 986·2019-08-29 16:39
閱讀 1116·2019-08-29 16:20