I’m trying to find a “generic” way of excluding a transitive dependency from being included without having to exclude it from all the dependencies that depend on it. For example, if I want to exclude slf4j, I do the following:
org.hibernate
hibernate-jmx
3.3.2.GA
org.slf4j
slf4j-api
org.hibernate
hibernate-entitymanager
3.4.0.GA
jar
org.slf4j
slf4j-api
This is partly to clean up the pom file, partly to avoid issues in the future with people adding dependencies that depend on that excluded dependency — and forgetting to exclude it.
Is there a way?
解决方案
"Assuming I want to exclude avalon-framework from my WAR, I would add the following to my projects POM with a scope of provided. This works across all transitive dependencies and allows you to specify it once.
avalon-framework
avalon-framework
4.1.3
provided
This even works when specifying it in the parent POM, which would prevent projects from having to declare this in all child POMs."