|  
 
 
maven依赖总结  
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
查找出在编译和测试中未使用但显示声明的依赖 
  
 |