I have a Maven project. Here I have added the following dependency
javax.servlet
javax.servlet-api
${javax.servlet.version}
provided
{javax.servlet.version} has the value 3.1.0
However when I look at the maven dependencies in Eclipse I see that servlet-api-2.3.jar is added. Due to this I am unable to build my project as I am unable to use the method HttpServletRequest.getPart(), which is available only starting Servlet 3.0.
Is there anyway of figuring out as to why the version 2.3 gets added ?
Is there any way of avoiding this ?
解决方案
From the project explorer, you can right click the pom.xml file, and select
Open With → Maven POM Editor
Then select the Dependency Hierarchy tab. All of your explicitly declared dependencies will appear as top level nodes. You can see all of their transitive dependencies, and their transitive dependencies, and so on.
Once you find the one you want to exclude, you can right click the artifact, and select Exclude Maven Artifact (and select to exclude it from the project). You can go to your pom file by selecting the pom.xml tab. You should see some like
...
...
In the dependency that depended on this artifact