Detecting unused/undeclared dependencies

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).

How to do it...

Use the following steps to detect the unused/undeclared dependencies:

  1. Run the following Maven command on the demo-selendroid project that we used earlier:
    mvn dependency:analyze
    
  2. Note the report generated:
    [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
    

How it works...

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.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.133.158.32