您的位置:首页 > 其它

关于maven的依赖重复问题

2013-03-13 16:52 204 查看
       大家使用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.Filter
at 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插件,查看依赖树,找到重复的依赖。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: