Dependency Scopes

There are two types of dependencies in Maven: direct and transitive.
Direct dependencies are the ones that we explicitly include in the project.
These can be included using <dependency> tags:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

Transitive dependencies are required by direct dependencies. (The dependencies of the dependencies) Maven automatically includes required transitive dependencies in our project.

We can list all dependencies including transitive dependencies in the project using mvn dependency:tree command.