10 Maven高級使用

Maven是一個項目管理工具,主要作用是在項目開發階段對Java項目進行依賴管理和項目構建。
主要完成:清理,編輯,測試,報告,打包,部署等功能。

1、Maven依賴傳遞

當引用一個包的時候,會連帶引入相關聯的包,例如:

2、Maven依賴衝突

當引入不同版本的包是,如果這兩個包都依賴某個子包,就會導致這個子包會出現兩個不同的版本被引入。

解決衝突的方法

2.1、默認規則

使用第一聲明者優先原則,誰放在前邊,就用誰引入的子包。

使用路徑近者優先原則,導入依賴層次越深,優先級越低,直接導入優先級高於依賴導入。

2.2、排除依賴

將包的依賴導入給排除掉。

2.3、版本鎖定

 

 通過dependencies再導入版本的時候,就不需要再指定版本了。

3、分模塊構建工程

在企業項目開發過程中,由於項目規模龐大,業務複雜,參與的人員比較多,一般會通過合理的模塊拆分將一個大型的項目拆分爲N多個小模塊,分別進行開發。而且拆分出的模塊可以非常容易的被其他模塊複用。

常見的拆分方案有兩種:

第一種:按照業務模塊進行拆分,拆分成用戶模塊,訂單模塊,購物車模塊,每個模塊對應就是一個maven工程。

第二種:按照層進行拆分,持久層,業務層,表現層,每個層對應就是一個maven工程。

不管那種拆分方法,

不管用那種拆分方式,通常都會提供一個父工程,將一些共用的代碼和配置提取到父工程中進行統一管理和配置。

公共代碼放在parent中。不同工程根據層次關係相互依賴。

3.1、工程繼承

子工程繼承父工程,從父工程中繼承已經引入的Jar包。

父工程打包方式必須是pom,子工程通過parent標籤進行父工程的繼承,parent內部的artifactId就是父工程的標識。

3.2、工程聚合

在maven工程的pom.xml文件中,可以通過<modules>標籤將其他Maven工程聚合到一起,聚合的目的是爲了進行統一操作。

例如拆分後的maven工程有多個,要進行打包,就需要針對每個工程分別執行打包指令,這個時候可以通過<modules>標籤將這些工程統一聚合到一個maven工程中,需要打包的時候,只需要在此工程中執行一次打包命令,其下被聚合的工程都會被打包。

在父工程中,將其它工程集合在一起,未繼承父工程的工程也可以聚合進來。

打開這個窗口之後,工作目錄設置成聚合的工程,就可以統一執行相關命令。 

在父工程中鎖定包的版本,具體引用可以放在子包裏邊。

4、操作例子

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章