这个报错原本是一个简单的servlet-api包冲突的问题,但是有时候就是你明明知道结果,但总也做不对;
单是按照网上的修改,还是会报这个错误,实质是项目里的其他依赖仍然使用了javax.servlet:servlet-api的依赖,需要针对排除,
这里有两个命令
mvn dependency:tree -Dverbose -Dincludes= 要查询冲突的包名 <groupId>:<artifactId>
mvn -X compile dependency:tree -Dverbose >a.log
第一个是用来查询指定包名的依赖关系,比如我查询servlet-api都有哪些项目依赖就可以使用
mvn dependency:tree -Dverbose -Dincludes= javax.servlet:servlet-api
来查询,找到对应的项目,可以在其dependency中使用
<exclusions> <exclusion> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </exclusion> </exclusions>
来排除依赖
第二个命令是用来查看所有的依赖,并输出到文件
我的问题是项目原有使用了apache cxf做webservice,别人在引用相关包时将cxf-rt-transports-http-jetty也给编译进去了,所以才导致了冲突,由于使用的tomcat插件启动,所以将其scop设置为test,在测试时才会编译,然后用tomcat:run启动,完美无转换报错了