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