一、依赖的范围
依赖的范围有几个可选值,我们用得到的是:compile、test、provided 三个。
[1]从项目结构角度理解 compile 和 test 的区别
[2]从开发和运行这两个不同阶段理解 compile 和 provided 的区别
二、不同作用域的有效性
三、依赖的传递性
非compile范围的依赖不能传递,必须在有需要的工程中单独加入
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency>
四、依赖的原则:解决 jar 包冲突
[1]路径最短者优先
[2]路径相同时先声明者优先
这里“声明”的先后顺序指的是 pom.xml文件中dependency 标签配置的先后顺序。
五、依赖的排除
<dependency> <groupId>com.nchu.maven</groupId> <artifactId>HelloMaven</artifactId> <version>0.0.1-SNAPSHOT</version> <type>jar</type> <scope>compile</scope> <exclusions> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency>
六、统一管理所依赖 jar 包的版本
对同一个框架的一组 jar 包最好使用相同的版本。为了方便升级框架,可以将 jar 包的版本信息统一提取出来
<properties> <spring.version>4.1.1.RELEASE</spring.version> </properties> <dependencys> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> </dependencys>