As you use a number of dependencies, each of them in turn may also include further dependencies. A situation may come when there are multiple versions of the same dependencies in the project. This can often lead to errors.
To understand this, we need to have a fairly complex project that has several transitive dependencies. You can look at one such project at https://github.com/selendroid/demoproject-selendroid.
Clone the repository on your system. Now, we are ready to see how complex dependencies can get.
Use the following steps to avoid dependency hell:
mvn dependency:tree -Dverbose