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