1.依賴元素
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>${springframework.version}</version>
- <type>jar</type>
- <scope>compile</scope>
- </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.排除依賴
發現依賴包裏有些包不穩定,可以排除依賴,顯式的申明文檔的包
- <dependency>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- <version>1.4.1</version>
- <exclusions>
- <exclusion>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- <dependency>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
- <version>1.1</version>
- </dependency>
7.分類依賴
當同一個模塊,所依賴的幾個模塊版本都相同時,可以使用maven裏的屬性做分類依賴,依賴版本升級時改一處即可
- <properties>
- <springframework.version>2.5.6</springframework.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>${springframework.version}</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>${springframework.version}</version>
- <type>pom</type>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${springframework.version}</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context-support</artifactId>
- <version>${springframework.version}</version>
- <type>jar</type>
- <scope>compile</scope>
- </dependency>
- </dependencies>
8.優化依賴
可概括爲三個命令
mvn dependency:list
表示依賴列表,maven eclipse插件已經實現,有圖形化顯示,在pom.xml的dependencies頁
mvn dependency:tree
表示依賴列表,maven eclipse插件已經實現,有圖形化顯示,在pom.xml的dependency hierarchy頁
mvn dependency:analyze
查找出在編譯和測試中未使用但顯示聲明的依賴