本文簡要介紹Maven里面的坐標(coodinate)以及maven依賴管理(Dependency)
一、坐標
先來個截圖:
在上圖peoject欄目有groupId,artifactId,version,這個就是maven中坐標的概念,這三個屬性能夠唯一定位一個java架包,其中:
另外坐標還有個packaging屬性,代表項目的類型,默認是jar,描述了項目打包后的輸出。
在maven項目中groupId,artifactId,version就代表一個項目的坐標,其他項目可以通過這個幾個坐標屬性唯一單位到當前項目。
上圖中,通過junit的唯一坐標可以訂位到junit4.12,然后在項目中進行使用。
maven倉庫就是通過這些坐標來組織maven項目的,當項目指定了依賴的坐標后,項目就可以從maven的遠程倉庫中找到對應的maven項目,當相應坐標的maven項目已經在本地倉庫時,項目會自動使用本地倉庫坐標所能匹配的項目,而不會再從遠程倉庫下載。
二、依賴管理
maven坐標是maven項目的核心,依賴是通過maven坐標來實習的,上面的例子其實已經很好的演示了maven中的依賴:通過在pom文件中增加Dependency選項來完成,Dependency選項中會直接項目所依賴的項目的坐標。
2.1 傳遞性依賴
在上圖中,當前項目啊依賴與項目b和c,b項目依賴與項目d,c項目依賴于項目e。在maven中對于當前項目來說,只需要關注b和c。也就是說,在當前項目a的pom文件中只需要配置對于b和c的依賴,d和e的傳遞依賴maven會自動進行加載,而無需當前項目a進行關注,這是maven的強大之一(能夠很好的管理依賴)
2.2 依賴范圍
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency>
上面的依賴配置中多了個scope選項,scope選項指定了maven依賴生效的范圍,上面的例子范圍是test,說明它在Compiler插件運行compile目標的時候是不可用的。它只有在運行compiler:testCompile和surefire:test目標的時候才會被加入到classpath中。
新聞熱點
疑難解答