Maven 使用指南(5): Maven 自动依赖管理

从Maven2 开始,Maven可以自动管理Java应用所引用的开发包(Jar包),原文为transitive dependency (可传递的依赖管理),也就是说Java应用只需要定义其直接引用的Jar包依赖,而无需定义Java应用所引用的所有Jar 依赖。Maven 2可以自动添加Java应用直接引用库所依赖的其它Jar包。

这里我们可以下载hibernate 的一个示例,可以从http://www.hibernate.org/下载,也可以从本站下载.

使用Eclipse –>Import-> Existing Maven Project 打开这个Maven Project。

打开hibernate-tutorials/pom.xml 其dependency 部分定义如下:

[html]  view plain copy print ?
  1. <dependencies>  
  2.     <dependency>  
  3.       <groupId>org.hibernate</groupId>  
  4.       <artifactId>hibernate-core</artifactId>  
  5.       <version>4.1.6.Final</version>  
  6.       <scope>compile</scope>  
  7.     </dependency>  
  8.     <dependency>  
  9.       <groupId>org.slf4j</groupId>  
  10.       <artifactId>slf4j-simple</artifactId>  
  11.       <version>1.6.1</version>  
  12.       <scope>compile</scope>  
  13.     </dependency>  
  14.     <dependency>  
  15.       <groupId>junit</groupId>  
  16.       <artifactId>junit</artifactId>  
  17.       <version>4.10</version>  
  18.       <scope>compile</scope>  
  19.     </dependency>  
  20.     <dependency>  
  21.       <groupId>com.h2database</groupId>  
  22.       <artifactId>h2</artifactId>  
  23.       <version>1.2.145</version>  
  24.       <scope>compile</scope>  
  25.     </dependency>  
  26.   </dependencies>  
  27.    

而实际引用到的所有Jar包的层次如下:

可以看到hibernate-core 又引用了不少其它Jar,这些Maven都可以自动计算出并下载所需依赖。而无需再pom.xml 中一一列出。

在定义dependency时还可以指定其引用的scope,比如有些引用可能只是用在单元测试而不会添加到最终发布的jar包中。Maven支持下面几种Scope:

  • compile: 缺省Scope,应用到Maven所有阶段。
  • provided: 只在编译代码时需要,而无需发布到最终Jar包中。
  • runtime: 只在运行时需要,比如JDBC驱动。
  • test: 只在编译和运行单元测试时需要,比如Juint测试。

你可能感兴趣的:(Maven 使用指南(5): Maven 自动依赖管理)