As your project becomes large and the number of dependencies increase (including transitive dependencies), it is good to know if we have ended up declaring dependencies that we are not using, or if we are using undeclared dependencies (which are brought in by transitive dependencies).
Use the following steps to detect the unused/undeclared dependencies:
demo-selendroid
project that we used earlier:mvn dependency:analyze
[WARNING] Used undeclared dependencies found: [WARNING] org.seleniumhq.selenium:selenium-api:jar:2.43.1:compile [WARNING] org.hamcrest:hamcrest-library:jar:1.3:compile [WARNING] io.selendroid:selendroid-common:jar:0.12.0:compile [WARNING] Unused declared dependencies found: [WARNING] org.hamcrest:hamcrest-integration:jar:1.3:compile
As can be seen from the preceding report, Maven has identified a dependency used by the project that is not declared, for instance the selenium-api
JAR file. It has also found a dependency that is declared in the pom file, but is not used by the project (hamcrest-integration
). You could check if the removal causes any side-effect and if not, go ahead.
It is a good practice to explicitly define the dependency used in the project, specifying the version number instead of using it by means of a transitive dependency. This is because we have no control over the version or availability of this transitive dependency.
On the other hand, in order to have better control over dependency conflicts that we saw earlier, it may not be a bad idea to explicitly define versions of dependencies that are not directly required by our project but used by our dependencies.
3.133.158.32