Uploaded image for project: 'Maven Dependency Plugin'
  1. Maven Dependency Plugin
  2. MDEP-646

mvn dependency:analyze mistakenly treat backward compatible classes as used undeclared

    XMLWordPrintableJSON

Details

    Description

      I have the following dependency in my pom.xml:

          <dependency>
            <groupId>org.apache.cassandra</groupId>
            <artifactId>cassandra-all</artifactId>
            <version>2.1.8</version>
          </dependency>
      

      Then a piece of code in my app:

      import java.util.concurrent.ConcurrentHashMap;
      
      public class App {
          public void foo () {
              ConcurrentHashMap<String, String> m = new ConcurrentHashMap<>();
              ...
          }
      }
      

      Then mvn dependency:analyze will find a used undeclared dependency:

      [WARNING] Used undeclared dependencies found:
      [WARNING]    com.boundary:high-scale-lib:jar:1.0.6:compile
      

      It turns out that cassandra-all has a dependency on high-scale-lib, and high-scale-lib implemented a java.util.concurrent.ConcurrentHashMap for backward compatibility.

      In fact, my app use the built-in ConcurrentHashMap in JDK, not the ConcurrentHashMap from high-scale-lib. So I believe that it is incorrect for the dependency analysis to report it as used.

      Attachments

        Activity

          People

            Unassigned Unassigned
            johnlinp John Lin
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: