关于maven的依赖重复问题

来源:互联网 发布:淘宝订单价格字体 编辑:程序博客网 时间:2024/06/01 19:28

       大家使用maven的时候,经常会遇到依赖重复的问题。比如velocity1.6.4依赖commons-lang2.4,commons-configuaration1.2 也依赖commons-lang但是版本是2.1。这样就会用两个commons-lang的jar。一般情况下也不会有什么问题,但是如果要是依赖多个servlet-api。在容器启动的时候,就会报错,比如spring 的过滤器加载的时候:


java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filterat org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)


所以就需要去除,重复的依赖。在eclipse中maven插件中,可以看到依赖重复的位置。打开pom文件,点击Dependency Hierarchy标签




打开pom文件,在依赖中,加入exclusion标签


<dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-tools</artifactId><version>${velocity.tools.version}</version><exclusions><exclusion><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId></exclusion></exclusions></dependency>


 dependency:tree 就可以了,如果没有使用eclipse的maven插件的话,可以使用maven的dependency插件,查看依赖树,找到重复的依赖。


原创粉丝点击