parent和dependency的區別:
parent只能繼承pom.xml中配置的依賴。 通過<parent>引用的項目A, 可以使用A項目中<dependency>中依賴的StringUtils的方法, 但是不能調用A項目中自己定義的類和方法, C項目中通過<dependency>依賴的A,兩者卻都可以調用。
parent:將需要依賴的jar包放到一個模塊中,然后使用parent來標識依賴包, 方便版本修改,只需要修改模塊中版本,parent標記中可以不用版本號。 有兩個web項目A、B,一個java項目C 它們都需要用到同一個jar包:common.jar。 如果分別在三個項目的pom文件中定義各自對common.jar的依賴, 那么當common.jar的版本發生變化時, 三個項目的pom文件都要改,項目越多要改的地方就越多,很麻煩。 這時候就需要用到parent標簽, 我們創建一個parent項目, 打包類型為pom,parent項目中不存放任何代碼, 只是管理多個項目之間公共的依賴。 在parent項目的pom文件中定義對common.jar的依賴, ABC三個子項目中只需要定義<parent></parent>, parent標簽中寫上parent項目的pom坐標就可以引用到common.jar了。
dependency及dependencyManagement區別:
1.在同一個pom文件下, 如果<dependencies>和<dependencyManagement>中都對該jar做了依賴, 以<dependencies>的為准,優先級高於<dependencyManagement>。 若前者沒有對其依賴,而后者對其有依賴,則以后者為准。<dependencyManagement>里只是聲明依賴,並不實現引入. 2.在不同的pom文件中, 存在父子相互依賴關系的, 父項目的pom中<dependencyManagement>中對該jar做了依賴, 而子項目中<dependencies>又依賴了該jar, 如果子項目中沒有指定<version>和<scope>, 則繼承父項目中該jar的<version>和<scope>。 如果子項目中指定了<version>和<scope>,以子項目的為准。
dependencyManagement:相當於提前聲明一個依賴,但可以被重寫 有一個springmvc.jar,只有AB兩個web項目需要, C項目是java項目不需要,那么又要怎么去依賴。 如果AB中分別定義對springmvc.jar的依賴, 當springmvc.jar版本變化時修改起來又會很麻煩。 解決辦法是在parent項目的pom文件中使用 <dependencyManagement></dependencyManagement> 將springmvc.jar管理起來, 如果有哪個子項目要用,那么子項目在自己的pom文件中使用
