I’m currently working on a project and noticed that there are a lot of libraries marked with a scope of provided like so:
<dependency>
<groupId>somegroup</groupId>
<artifactId>someartifact</artifactId>
<version>0.1</version>
<scope>provided</scope>
</dependency>
But, when I look at the target container, I see no such library.
Upon further investigation, I realize that this scope was being used to exclude the library from the deployed artifact. It might have been a loose dependency on another library. Instead of using and exclusions list, to tell *me* that they just didn’t want it in the artifact, they used the provided scope to tell me that it’s already in the container.
Dear developers using maven, please choose to exclude unwanted dependencies rather than giving them a “provided” scope and sending those that follow you down this same rabbit hole.
I would prefer to see this:
<dependency>
<groupId>somegroup<groupId>
<artifactId>someartifact.thatdependson.someartifact</artifactId>
<exclusions>
<exclusion>
<groupId>somegroup</groupId>
<artifactId>someartifact</artifactId>
</exclusion>
</exclusions>
</dependency>
Thanks!



