通过maven工程引入依赖,Jar包的依赖范围介绍

compile:(默认)编译、测试、运行有效。

  ——编译依赖范围(默认),使用此依赖范围对于编译、测试、运行三种 classpath 都有效,即在编译、测试和运行的时候都要使用该依赖jar包;

test:测试有效。

  ——测试依赖范围,从字面意思就可以知道此依赖范围只能用于测试classpath,而在编译和运行项目时无法使用此类依赖,典型的是JUnit,它只用于编译测试代码和运行测试代码的时候才需要;

provided:编译和测试有效。

  ——此依赖范围,对于编译和测试classpath有效,而对运行时无效;

runtime:测试和运行有效。

  ——运行时依赖范围,对于测试和运行classpath有效,但是在编译主代码时无效,比如:JDBC驱动;

system:系统依赖范围,使用system范围的依赖时必须通过systemPath元素显示地指定依赖文件的路径,不依赖Maven仓库解析,所以可能会造成建构的不可移植,谨慎使用。

提示:导入servlet-api-xxx.jar,jsp-api-xx.jar依赖范围选择:provided

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>servlet-api</artifactId>

  <version>2.5</version>
  <scope>provided</scope>
</dependency>

如果设置为compile,tomcat运行时候需要这些jar , tomcat目录下也有这个jar包,最终出现jar包冲突问题。

Maven自身的冲突调节原则:

1).第一声明者优先原则;

2).路径近者优先原则.

猜你喜欢

转载自www.cnblogs.com/zhengjinjun/p/9221584.html