Question

I am using the dependency:analyze to detect dependency problems. But I have found a problem with the transitive dependencies because the plugin doesn't resolve this dependencies.

When I execute mvn dependency:tree, the output shows the transitive dependencies.

Dependencies

project A
  dependency B
project C
  dependency A

Outuput -> (project C - path)/ mvn clean install

[WARNING] Used undeclared dependencies found:
   dependency B: compile

Plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.4</version>
    <executions>
        <execution>
            <id>analyze</id>
            <phase>verify</phase>
            <goals>
                <goal>analyze-only</goal>
            </goals>
            <configuration>
                <failOnWarning>true</failOnWarning>
            </configuration>
       </execution>
   </executions>
</plugin>

Why the plugin doesn't detect the transitive dependency

Was it helpful?

Solution

Dependency analysis works as expected.

Code in project C uses classes from project B but it does not directly depend on project B. It compiles only because it transitively depend on B through project A. Changing dependency of project A would break project C. This is what we are trying to avoid

This is not good, if the code uses classes from B, it should directly depend on B.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top