Maven常见jar包冲突问题
这个问题不是很大,但是一旦报错,很难找出原因,所以在此总结一下。
主要是jsp-api:2.1.3-b06.jar这个jar包,他的依赖坐标如下
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1.3-b06</version>
<scope>compile</scope>
</dependency>
上边的引用的是jsp-api:2.1.3-b06.jar,这个包还依赖着javax.servlet:3.0-b70.jar和el-api:2.1.2-b05.jar两个jar包。
因为他上边定义依赖范围是compile,所以jsp-api:2.1.3-b06.jar以及他所依赖的两个jar包,在运行的时候就会被拿到部署的目录里边。
那Maven本身就集成了tomcat插件,在tomcat中本身也有这三个jar包。所以在部署的时候,这三个jar包就重复了,造成了jar包冲突。
因为依赖范围是compile,他在编译,测试,部署运行的时候都参与,所以会造成jar包的冲突,那我们就把他的依赖范围改成provided,就可以了,只在编译和运行的时候参与,部署运行的时候不参与,就不会造成jar包的冲突问题了。