Your assumption is correct.
There are two types of Maven dependencies:
-
Direct: These are dependencies defined in your
pom.xmlfile under the<dependencies/>section. -
Transitive: These are dependencies that are dependencies of your direct dependencies.
Dependencies with provided scope are meant to:
- Either be excluded from the final artifact (for example, for
warfiles you would not want to includeservlet-api,servlet-jsp, etc) - Or overriden — where the project that inherits these defines a version and/or overrides the scope