Maven会根据Jar依赖,自动引入需要的Jar。但有时这种传递依赖会造成Jar版本冲突。例如:引入proxool0.9.1的数据连接池jar,会自动引入servlet-api2.3.jar。但版本过低会与我们web容器中的servlet-api.jar造成冲突。
解决传递依赖方法如下:
一、[b]mvn dependency:tree[/b]
使用 mvn dependency:tree 命令查看传递依赖。可以看到com.cloudhopper.proxool:proxool:jar:0.9.1的会自动引入如下依赖。
二、排除传递依赖
找到并修改POM文件,排除对servlet-api的依赖
<dependency>
<groupId>com.cloudhopper.proxool</groupId>
<artifactId>proxool</artifactId>
<version>0.9.1</version>
[color=darkblue][b]<exclusions>
<exclusion>
<artifactId>servlet-api</artifactId>
<groupId>javax.servlet</groupId>
</exclusion>
</exclusions>[/b][/color]
</dependency>
如果使用Eclipse可以直接如下图操作:
[img]http://dl2.iteye.com/upload/attachment/0113/5577/6dfe945c-f48c-3e57-82bd-14f0272d6fd2.png[/img]
解决传递依赖方法如下:
一、[b]mvn dependency:tree[/b]
使用 mvn dependency:tree 命令查看传递依赖。可以看到com.cloudhopper.proxool:proxool:jar:0.9.1的会自动引入如下依赖。
[INFO] +- com.cloudhopper.proxool:proxool:jar:0.9.1:compile
[INFO] | +- com.cloudhopper.proxool:proxool-cglib:jar:0.9.1:compile
[INFO] | \- avalon-framework:avalon-framework-api:jar:4.3:compile
[INFO] | \- avalon-logkit:avalon-logkit:jar:2.1:compile
[INFO] | +- javax.servlet:servlet-api:jar:2.3:compile
[INFO] | +- geronimo-spec:geronimo-spec-javamail:jar:1.3.1-rc3:compile
[INFO] | \- geronimo-spec:geronimo-spec-jms:jar:1.1-rc4:compile
二、排除传递依赖
找到并修改POM文件,排除对servlet-api的依赖
<dependency>
<groupId>com.cloudhopper.proxool</groupId>
<artifactId>proxool</artifactId>
<version>0.9.1</version>
[color=darkblue][b]<exclusions>
<exclusion>
<artifactId>servlet-api</artifactId>
<groupId>javax.servlet</groupId>
</exclusion>
</exclusions>[/b][/color]
</dependency>
如果使用Eclipse可以直接如下图操作:
[img]http://dl2.iteye.com/upload/attachment/0113/5577/6dfe945c-f48c-3e57-82bd-14f0272d6fd2.png[/img]