- 1、依赖的传递性
- ①概念
- ②传递的原则
- 2、使用 compile 范围依赖 spring-core
- 3、验证 test 和 provided 范围不能传递
1、依赖的传递性
①概念
A 依赖 B,B 依赖 C,那么在 A 没有配置对 C 的依赖的情况下,A 里面能不能直接使用 C?
②传递的原则
在 A 依赖 B,B 依赖 C 的前提下,C 是否能够传递到 A,取决于 B 依赖 C 时使用的依赖范围。
- B 依赖 C 时使用 compile 范围:可以传递
- B 依赖 C 时使用 test 或 provided 范围:不能传递,所以需要这样的 jar 包时,就必须在需要的地方明确配置依赖才可以。
2、使用 compile 范围依赖 spring-core
测试方式:让 pro01-maven-java 工程依赖 spring-core具体操作:编辑 pro01-maven-java 工程根目录下 pom.xml
使用 mvn dependency:tree 命令查看效果:TIP[INFO] com.atguigu.maven:pro01-maven-java:jar:1.0-SNAPSHOT[INFO] +- junit:junit:jar:4.12:test[INFO] | - org.hamcrest:hamcrest-core:jar:1.3:test[INFO] - org.springframework:spring-core:jar:4.0.0.RELEASE:compile[INFO] - commons-logging:commons-logging:jar:1.1.1:compile还可以在 Web 工程中,使用 mvn dependency:tree 命令查看效果(需要重新将 pro01-maven-java 安装到仓库):TIP[INFO] com.atguigu.maven:pro02-maven-web:war:1.0-SNAPSHOT[INFO] +- junit:junit:jar:4.12:test[INFO] | - org.hamcrest:hamcrest-core:jar:1.3:test[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided[INFO] - com.atguigu.maven:pro01-maven-java:jar:1.0-SNAPSHOT:compile[INFO] - org.springframework:spring-core:jar:4.0.0.RELEASE:compile[INFO] - commons-logging:commons-logging:jar:1.1.1:compile<!-- https://mvnrepository.com/artifact/org.springframework/spring-core --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.0.0.RELEASE</version></dependency>
3、验证 test 和 provided 范围不能传递
从上面的例子已经能够看到,pro01-maven-java 依赖了 junit,但是在 pro02-maven-web 工程中查看依赖树的时候并没有看到 junit。要验证 provided 范围不能传递,可以在 pro01-maven-java 工程中加入 servlet-api 的依赖。
效果还是和之前一样:TIP[INFO] com.atguigu.maven:pro02-maven-web:war:1.0-SNAPSHOT[INFO] +- junit:junit:jar:4.12:test[INFO] | - org.hamcrest:hamcrest-core:jar:1.3:test[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided[INFO] - com.atguigu.maven:pro01-maven-java:jar:1.0-SNAPSHOT:compile[INFO] - org.springframework:spring-core:jar:4.0.0.RELEASE:compile[INFO] - commons-logging:commons-logging:jar:1.1.1:compile<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency>
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论