maven:项目管理工具,贯穿了整个项目证明周期:编译、测试、打包、发布等。maven的依赖管理十分强大。
最简单的依赖
依赖是使用maven坐标来定位的(groupId, artifactId, version):
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
</dependency>
依赖归类
随着项目变大,依赖越来越多,其中一些依赖的groupId是相同的,artifactId不同,但是他们的版本必须一致,因此,对他们的版本进行统一管理:
<dependencies>
<dependency>
<groupId>org.spring.framework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.spring.framework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.spring.framework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.spring.framework</groupId>
<artifactId>spring-mock</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
<properties>
<spring.version>2.5</spring.version>
</properties>
依赖范围scope
依赖如下:
如:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
当我们没有声明依赖范围的时候,其默认的依赖范围是compile;
依赖管理
实际项目中,maven项目包含多个模块,一些模块的依赖是相同的,为此使用dependencyManagement管理:
- 在父模块中使用dependencyManagement配置依赖
- 在子模块中使用dependencies添加依赖
注意:dependencyManagement实际上不会真正引入任何依赖,dependencies才会。但是,当父模块中配置了某个依赖之后,子模块只需使用简单groupId和artifactId就能自动继承相应的父模块依赖配置。