maven依賴

1.依賴元素

[html] view plaincopy
  1. <dependency>  
  2.     <groupId>org.springframework</groupId>  
  3.     <artifactId>spring-core</artifactId>  
  4.     <version>${springframework.version}</version>  
  5.     <type>jar</type>  
  6.     <scope>compile</scope>  
  7. </dependency>  

groupId,必選,實際隸屬項目

artifactId,必選,其中的模塊

version必選,版本號

type可選,依賴類型,默認jar

scope可選,依賴範圍,默認compile

optional可選,標記依賴是否可選,默認false

exclusion可選,排除傳遞依賴性,默認空

2.依賴範圍

maven項目又三種classpath(編譯,測試,運行)

scope用來表示與classpath的關係,總共有五種

compile:編譯,測試,運行

test:測試

provided:編譯,測試

runtime:運行

system:編譯,測試,同provided,但必須指定systemPath,慎用

3.傳遞性依賴

顧名思義,你懂的,但是傳遞的範圍會發生改變,這個由maven自身處理,只要理解下即可

第一列爲第一依賴,第二列爲第二依賴,單元格爲傳遞範圍

  compile test provided runtime
compile compile _ _ runtime
test test _ _ test
provided provided _ provided provided
runtime runtime _ _ runtime

4.依賴調解

傳遞路徑長度取最短原則,傳遞路徑長度相等時,採取最先申明原則

5.可選依賴

儘量少用,可選依賴不會被傳遞,需要顯式申明

6.排除依賴

發現依賴包裏有些包不穩定,可以排除依賴,顯式的申明文檔的包

[html] view plaincopy
  1. <dependency>  
  2.     <groupId>javax.mail</groupId>  
  3.     <artifactId>mail</artifactId>  
  4.     <version>1.4.1</version>  
  5.     <exclusions>  
  6.         <exclusion>  
  7.             <groupId>javax.activation</groupId>  
  8.             <artifactId>activation</artifactId>  
  9.         </exclusion>  
  10.     </exclusions>  
  11. </dependency>  
  12. <dependency>  
  13.     <groupId>javax.activation</groupId>  
  14.     <artifactId>activation</artifactId>  
  15.     <version>1.1</version>  
  16. </dependency>  

7.分類依賴

當同一個模塊,所依賴的幾個模塊版本都相同時,可以使用maven裏的屬性做分類依賴,依賴版本升級時改一處即可

[html] view plaincopy
  1. <properties>  
  2.     <springframework.version>2.5.6</springframework.version>  
  3. </properties>  
  4. <dependencies>  
  5.     <dependency>  
  6.         <groupId>org.springframework</groupId>  
  7.         <artifactId>spring-core</artifactId>  
  8.         <version>${springframework.version}</version>  
  9.         <type>jar</type>  
  10.         <scope>compile</scope>  
  11.     </dependency>  
  12.     <dependency>  
  13.         <groupId>org.springframework</groupId>  
  14.         <artifactId>spring-beans</artifactId>  
  15.         <version>${springframework.version}</version>  
  16.         <type>pom</type>  
  17.         <scope>compile</scope>  
  18.     </dependency>  
  19.     <dependency>  
  20.         <groupId>org.springframework</groupId>  
  21.         <artifactId>spring-context</artifactId>  
  22.         <version>${springframework.version}</version>  
  23.         <type>jar</type>  
  24.         <scope>compile</scope>  
  25.     </dependency>  
  26.     <dependency>  
  27.         <groupId>org.springframework</groupId>  
  28.         <artifactId>spring-context-support</artifactId>  
  29.         <version>${springframework.version}</version>  
  30.         <type>jar</type>  
  31.         <scope>compile</scope>  
  32.     </dependency>  
  33. </dependencies>  

8.優化依賴

可概括爲三個命令

mvn dependency:list

表示依賴列表,maven eclipse插件已經實現,有圖形化顯示,在pom.xml的dependencies頁


mvn dependency:tree

表示依賴列表,maven eclipse插件已經實現,有圖形化顯示,在pom.xml的dependency hierarchy頁

mvn dependency:analyze

查找出在編譯和測試中未使用但顯示聲明的依賴

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