Get a complete dependency graph in mavenHow can I create an executable JAR with dependencies using Maven?How to add local jar files to a Maven project?maven package doesn't compileBuild order of Maven multimodule project?How to pack switchyard application with mavenMaven: why does it contain a seemingly broken schemaLocation?download the repositories in mavenmaven-compiler-plugin in parent pomFailed to execute goal on project..Could not resolve dependencies forFailed to read artifact descriptor for org.apac he.maven.plugins

Slow query when having 'contains' and '=' together in where clause

Should I inform my future product owner that there is a good chance that a team member will leave the company soon?

Statistical tests for benchmark comparison

What is the maximum viable speed for a projectile within earth's atmosphere?

How to give my students a straightedge instead of a ruler

How do rulers get rich from war?

Are lay articles good enough to be the main source of information for PhD research?

Applications of mathematics in clinical setting

What the did the controller say during my approach to land (audio clip)?

How do you determine which representation of a function to use for Newton's method?

What's the word for a student who doesn't register but goes to a class anyway?

Why do things cool off?

Talk about Grandpa's weird talk: Who are these folks?

Very lazy puppy

Explanation of 申し訳ございません

Is Zack Morris's 'time stop' ability in "Saved By the Bell" a supernatural ability?

Is it safe to unplug a blinking USB drive after 'safely' ejecting it?

Why do we need to use transistors when building an OR gate?

What's the benefit of prohibiting the use of techniques/language constructs that have not been taught?

Can we have a C++ function with multiple return types? ( C++11 and above)

Is the name of an interval between two notes unique and absolute?

In Bb5 systems against the Sicilian, why does White exchange their b5 bishop without playing a6?

Name of example of irrationality of proportional and absolute cost

What was the earliest microcomputer Logo language implementation?



Get a complete dependency graph in maven


How can I create an executable JAR with dependencies using Maven?How to add local jar files to a Maven project?maven package doesn't compileBuild order of Maven multimodule project?How to pack switchyard application with mavenMaven: why does it contain a seemingly broken schemaLocation?download the repositories in mavenmaven-compiler-plugin in parent pomFailed to execute goal on project..Could not resolve dependencies forFailed to read artifact descriptor for org.apac he.maven.plugins






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








2















I have a problem with maven dependencies. I try in my maven plugin to have a full dependencies graph, but some duplicated nodes does not appear.



My maven project is made of :



  • "dependency_test", the parent project of 4 modules

  • "mod1", "mod2", "mod3", "mod4", the child modules

  • "dependency_test_maven_plugin", the maven plugin project

here are the differents pom.xml files :



dependency_test :



 <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<modules>
<module>mod1</module>
<module>mod2</module>
<module>mod3</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod1</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod2</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod3</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod4</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.aned</groupId>
<artifactId>dependency_test_maven_plugin</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>


mod1 :



 <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod1</artifactId>
<dependencies>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod2</artifactId>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod3</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.aned</groupId>
<artifactId>dependency_test_maven_plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>dependency-test-goal</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>


mod2 :



<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod2</artifactId>
<dependencies>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod3</artifactId>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod4</artifactId>
</dependency>
</dependencies>
</project>


mod3 :



 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod3</artifactId>
</project>


mod4 :



 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod4</artifactId>
</project>


My dependency graph is so like :



mod1
--mod2
----mod3
----mod4
--mod3


I need to have this complete graph in my "dependency_test_maven_plugin" plugin. For now, it look like :



pom.xml



<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aned</groupId>
<artifactId>dependency_test_maven_plugin</artifactId>
<version>1.0.0</version>
<packaging>maven-plugin</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-dependency-tree</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
</project>


Mojo class :



package dependency_test_maven_plugin;

import java.util.Arrays;

import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.DefaultProjectBuildingRequest;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
import org.apache.maven.shared.dependency.graph.DependencyNode;
import org.apache.maven.shared.dependency.graph.traversal.CollectingDependencyNodeVisitor;

@Mojo(name = "dependency-test-goal", defaultPhase = LifecyclePhase.PROCESS_RESOURCES, requiresDependencyCollection = ResolutionScope.COMPILE_PLUS_RUNTIME, requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME)
public class JLinkMojo extends AbstractMojo

@Parameter(defaultValue = "$project", readonly = true, required = true)
MavenProject project;

@Parameter(defaultValue = "$session", readonly = true, required = true)
private MavenSession session;

@Component(hint = "default")
private DependencyGraphBuilder dependencyGraphBuilder;

ArtifactFilter artifactFilter;
ProjectBuildingRequest buildingRequest;

public void execute() throws MojoExecutionException
artifactFilter = new ExcludesArtifactFilter(Arrays.asList("com.aned:dependency_test_maven_plugin"));
buildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());

buildingRequest.setProject(project);

try
DependencyNode rootNode = dependencyGraphBuilder.buildDependencyGraph(buildingRequest, artifactFilter);
getLog().info("Start depdendency graph");
int level = 0;
displayNode(rootNode, level);
getLog().info("End depdendency graph");

CollectingDependencyNodeVisitor visitor = new CollectingDependencyNodeVisitor();
rootNode.accept(visitor);

for (DependencyNode dependencyNode : visitor.getNodes())
getLog().info("Start depdendency graph for node " + dependencyNode.getArtifact().getArtifactId());
displayNode(dependencyNode, level);
getLog().info("End depdendency graph for node " + dependencyNode.getArtifact().getArtifactId());


catch (DependencyGraphBuilderException e)
throw new MojoExecutionException("Error", e);



private void displayNode(DependencyNode rootNode, int level)
String indentation = "";
for (int i = 0; i < level; i++)
indentation += "--";

getLog().info(indentation + rootNode.getArtifact().getArtifactId());

for (DependencyNode childrenNode : rootNode.getChildren())
displayNode(childrenNode, level + 1);





On execution, the mojo traces are :



[INFO] --- dependency_test_maven_plugin:1.0.0:dependency-test-goal (default) @ mod1 ---
[INFO] Start depdendency graph
[INFO] mod1
[INFO] --mod2
[INFO] ----mod4
[INFO] --mod3
[INFO] End depdendency graph
[INFO] Start depdendency graph for node mod1
[INFO] mod1
[INFO] --mod2
[INFO] ----mod4
[INFO] --mod3
[INFO] End depdendency graph for node mod1
[INFO] Start depdendency graph for node mod2
[INFO] mod2
[INFO] --mod4
[INFO] End depdendency graph for node mod2
[INFO] Start depdendency graph for node mod4
[INFO] mod4
[INFO] End depdendency graph for node mod4
[INFO] Start depdendency graph for node mod3
[INFO] mod3
[INFO] End depdendency graph for node mod3


So, in the dependency graph traces like in visitor.getNodes traces, the dependency from mod2 to mod3 is not visible (I think it's because it's a duplicate of the link from mod1 to mod3).
Is there a way to have the complete trace :



mod1
--mod2
----mod3
----mod4
--mod3


Edit 1 : If I try to use dependency:tree on my parent project, I got the same result :



[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ mod1 ---
[INFO] com.aned.test:mod1:jar:1.0.0
[INFO] +- com.aned.test:mod2:jar:1.0.0:compile
[INFO] | - com.aned.test:mod4:jar:1.0.0:compile
[INFO] +- com.aned.test:mod3:jar:1.0.0:compile
[INFO] - com.aned:dependency_test_maven_plugin:jar:1.0.0:provided
[INFO] +- org.apache.maven:maven-plugin-api:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-model:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-artifact:jar:3.6.0:provided
[INFO] | +- org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.3:provided
[INFO] | | - javax.enterprise:cdi-api:jar:1.0:provided
[INFO] | | - javax.annotation:jsr250-api:jar:1.0:provided
[INFO] | +- org.codehaus.plexus:plexus-utils:jar:3.1.0:provided
[INFO] | - org.codehaus.plexus:plexus-classworlds:jar:2.5.2:provided
[INFO] +- org.apache.maven:maven-project:jar:2.2.1:provided
[INFO] | +- org.apache.maven:maven-settings:jar:2.2.1:provided
[INFO] | +- org.apache.maven:maven-profile:jar:2.2.1:provided
[INFO] | +- org.apache.maven:maven-artifact-manager:jar:2.2.1:provided
[INFO] | | +- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-6:provided
[INFO] | | - backport-util-concurrent:backport-util-concurrent:jar:3.1:provided
[INFO] | +- org.apache.maven:maven-plugin-registry:jar:2.2.1:provided
[INFO] | +- org.codehaus.plexus:plexus-interpolation:jar:1.11:provided
[INFO] | - org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:provided
[INFO] | +- junit:junit:jar:3.8.1:provided
[INFO] | - classworlds:classworlds:jar:1.1-alpha-2:provided
[INFO] +- org.apache.maven:maven-core:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-settings-builder:jar:3.6.0:provided
[INFO] | | - org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4:provided
[INFO] | | - org.sonatype.plexus:plexus-cipher:jar:1.4:provided
[INFO] | +- org.apache.maven:maven-builder-support:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-repository-metadata:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-model-builder:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-resolver-provider:jar:3.6.0:provided
[INFO] | | - org.slf4j:slf4j-api:jar:1.7.25:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-impl:jar:1.3.1:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-api:jar:1.3.1:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-spi:jar:1.3.1:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-util:jar:1.3.1:provided
[INFO] | +- org.apache.maven.shared:maven-shared-utils:jar:3.2.1:provided
[INFO] | | - commons-io:commons-io:jar:2.5:provided
[INFO] | +- org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.3:provided
[INFO] | +- com.google.inject:guice:jar:no_aop:4.2.1:provided
[INFO] | | +- aopalliance:aopalliance:jar:1.0:provided
[INFO] | | - com.google.guava:guava:jar:25.1-android:provided
[INFO] | | +- com.google.code.findbugs:jsr305:jar:3.0.2:provided
[INFO] | | +- org.checkerframework:checker-compat-qual:jar:2.0.0:provided
[INFO] | | +- com.google.errorprone:error_prone_annotations:jar:2.1.3:provided
[INFO] | | +- com.google.j2objc:j2objc-annotations:jar:1.1:provided
[INFO] | | - org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:provided
[INFO] | +- javax.inject:javax.inject:jar:1:provided
[INFO] | +- org.codehaus.plexus:plexus-component-annotations:jar:1.7.1:provided
[INFO] | - org.apache.commons:commons-lang3:jar:3.8.1:provided
[INFO] - org.apache.maven.shared:maven-dependency-tree:jar:3.0.1:provided
[INFO] - org.eclipse.aether:aether-util:jar:0.9.0.M2:provided
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] dependency_test 1.0.0 .............................. SUCCESS [ 3.769 s]
[INFO] mod3 ............................................... SUCCESS [ 0.153 s]
[INFO] mod2 ............................................... SUCCESS [ 0.110 s]
[INFO] mod1 1.0.0 ......................................... SUCCESS [ 0.097 s]
[INFO] ------------------------------------------------------------------------


Thank you,










share|improve this question





















  • 1





    Have you tried to run mvn dependency:tree command? It might help

    – Valentin Carnu
    Mar 28 at 13:42












  • Thanks for your answer, I edit the question with the dependency:tree result (same issue, unfortunally...)

    – Alexandre Nedjari
    Mar 28 at 13:55











  • Did you try Maven dependency tree with output appended? It allows to aggregate the dependency trees of each module. mvn dependency:tree -DappendOutput -DoutputFile=/path/to/dependencyTree.txt

    – Mincong Huang
    Mar 29 at 21:24

















2















I have a problem with maven dependencies. I try in my maven plugin to have a full dependencies graph, but some duplicated nodes does not appear.



My maven project is made of :



  • "dependency_test", the parent project of 4 modules

  • "mod1", "mod2", "mod3", "mod4", the child modules

  • "dependency_test_maven_plugin", the maven plugin project

here are the differents pom.xml files :



dependency_test :



 <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<modules>
<module>mod1</module>
<module>mod2</module>
<module>mod3</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod1</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod2</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod3</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod4</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.aned</groupId>
<artifactId>dependency_test_maven_plugin</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>


mod1 :



 <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod1</artifactId>
<dependencies>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod2</artifactId>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod3</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.aned</groupId>
<artifactId>dependency_test_maven_plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>dependency-test-goal</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>


mod2 :



<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod2</artifactId>
<dependencies>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod3</artifactId>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod4</artifactId>
</dependency>
</dependencies>
</project>


mod3 :



 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod3</artifactId>
</project>


mod4 :



 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod4</artifactId>
</project>


My dependency graph is so like :



mod1
--mod2
----mod3
----mod4
--mod3


I need to have this complete graph in my "dependency_test_maven_plugin" plugin. For now, it look like :



pom.xml



<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aned</groupId>
<artifactId>dependency_test_maven_plugin</artifactId>
<version>1.0.0</version>
<packaging>maven-plugin</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-dependency-tree</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
</project>


Mojo class :



package dependency_test_maven_plugin;

import java.util.Arrays;

import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.DefaultProjectBuildingRequest;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
import org.apache.maven.shared.dependency.graph.DependencyNode;
import org.apache.maven.shared.dependency.graph.traversal.CollectingDependencyNodeVisitor;

@Mojo(name = "dependency-test-goal", defaultPhase = LifecyclePhase.PROCESS_RESOURCES, requiresDependencyCollection = ResolutionScope.COMPILE_PLUS_RUNTIME, requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME)
public class JLinkMojo extends AbstractMojo

@Parameter(defaultValue = "$project", readonly = true, required = true)
MavenProject project;

@Parameter(defaultValue = "$session", readonly = true, required = true)
private MavenSession session;

@Component(hint = "default")
private DependencyGraphBuilder dependencyGraphBuilder;

ArtifactFilter artifactFilter;
ProjectBuildingRequest buildingRequest;

public void execute() throws MojoExecutionException
artifactFilter = new ExcludesArtifactFilter(Arrays.asList("com.aned:dependency_test_maven_plugin"));
buildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());

buildingRequest.setProject(project);

try
DependencyNode rootNode = dependencyGraphBuilder.buildDependencyGraph(buildingRequest, artifactFilter);
getLog().info("Start depdendency graph");
int level = 0;
displayNode(rootNode, level);
getLog().info("End depdendency graph");

CollectingDependencyNodeVisitor visitor = new CollectingDependencyNodeVisitor();
rootNode.accept(visitor);

for (DependencyNode dependencyNode : visitor.getNodes())
getLog().info("Start depdendency graph for node " + dependencyNode.getArtifact().getArtifactId());
displayNode(dependencyNode, level);
getLog().info("End depdendency graph for node " + dependencyNode.getArtifact().getArtifactId());


catch (DependencyGraphBuilderException e)
throw new MojoExecutionException("Error", e);



private void displayNode(DependencyNode rootNode, int level)
String indentation = "";
for (int i = 0; i < level; i++)
indentation += "--";

getLog().info(indentation + rootNode.getArtifact().getArtifactId());

for (DependencyNode childrenNode : rootNode.getChildren())
displayNode(childrenNode, level + 1);





On execution, the mojo traces are :



[INFO] --- dependency_test_maven_plugin:1.0.0:dependency-test-goal (default) @ mod1 ---
[INFO] Start depdendency graph
[INFO] mod1
[INFO] --mod2
[INFO] ----mod4
[INFO] --mod3
[INFO] End depdendency graph
[INFO] Start depdendency graph for node mod1
[INFO] mod1
[INFO] --mod2
[INFO] ----mod4
[INFO] --mod3
[INFO] End depdendency graph for node mod1
[INFO] Start depdendency graph for node mod2
[INFO] mod2
[INFO] --mod4
[INFO] End depdendency graph for node mod2
[INFO] Start depdendency graph for node mod4
[INFO] mod4
[INFO] End depdendency graph for node mod4
[INFO] Start depdendency graph for node mod3
[INFO] mod3
[INFO] End depdendency graph for node mod3


So, in the dependency graph traces like in visitor.getNodes traces, the dependency from mod2 to mod3 is not visible (I think it's because it's a duplicate of the link from mod1 to mod3).
Is there a way to have the complete trace :



mod1
--mod2
----mod3
----mod4
--mod3


Edit 1 : If I try to use dependency:tree on my parent project, I got the same result :



[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ mod1 ---
[INFO] com.aned.test:mod1:jar:1.0.0
[INFO] +- com.aned.test:mod2:jar:1.0.0:compile
[INFO] | - com.aned.test:mod4:jar:1.0.0:compile
[INFO] +- com.aned.test:mod3:jar:1.0.0:compile
[INFO] - com.aned:dependency_test_maven_plugin:jar:1.0.0:provided
[INFO] +- org.apache.maven:maven-plugin-api:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-model:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-artifact:jar:3.6.0:provided
[INFO] | +- org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.3:provided
[INFO] | | - javax.enterprise:cdi-api:jar:1.0:provided
[INFO] | | - javax.annotation:jsr250-api:jar:1.0:provided
[INFO] | +- org.codehaus.plexus:plexus-utils:jar:3.1.0:provided
[INFO] | - org.codehaus.plexus:plexus-classworlds:jar:2.5.2:provided
[INFO] +- org.apache.maven:maven-project:jar:2.2.1:provided
[INFO] | +- org.apache.maven:maven-settings:jar:2.2.1:provided
[INFO] | +- org.apache.maven:maven-profile:jar:2.2.1:provided
[INFO] | +- org.apache.maven:maven-artifact-manager:jar:2.2.1:provided
[INFO] | | +- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-6:provided
[INFO] | | - backport-util-concurrent:backport-util-concurrent:jar:3.1:provided
[INFO] | +- org.apache.maven:maven-plugin-registry:jar:2.2.1:provided
[INFO] | +- org.codehaus.plexus:plexus-interpolation:jar:1.11:provided
[INFO] | - org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:provided
[INFO] | +- junit:junit:jar:3.8.1:provided
[INFO] | - classworlds:classworlds:jar:1.1-alpha-2:provided
[INFO] +- org.apache.maven:maven-core:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-settings-builder:jar:3.6.0:provided
[INFO] | | - org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4:provided
[INFO] | | - org.sonatype.plexus:plexus-cipher:jar:1.4:provided
[INFO] | +- org.apache.maven:maven-builder-support:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-repository-metadata:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-model-builder:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-resolver-provider:jar:3.6.0:provided
[INFO] | | - org.slf4j:slf4j-api:jar:1.7.25:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-impl:jar:1.3.1:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-api:jar:1.3.1:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-spi:jar:1.3.1:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-util:jar:1.3.1:provided
[INFO] | +- org.apache.maven.shared:maven-shared-utils:jar:3.2.1:provided
[INFO] | | - commons-io:commons-io:jar:2.5:provided
[INFO] | +- org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.3:provided
[INFO] | +- com.google.inject:guice:jar:no_aop:4.2.1:provided
[INFO] | | +- aopalliance:aopalliance:jar:1.0:provided
[INFO] | | - com.google.guava:guava:jar:25.1-android:provided
[INFO] | | +- com.google.code.findbugs:jsr305:jar:3.0.2:provided
[INFO] | | +- org.checkerframework:checker-compat-qual:jar:2.0.0:provided
[INFO] | | +- com.google.errorprone:error_prone_annotations:jar:2.1.3:provided
[INFO] | | +- com.google.j2objc:j2objc-annotations:jar:1.1:provided
[INFO] | | - org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:provided
[INFO] | +- javax.inject:javax.inject:jar:1:provided
[INFO] | +- org.codehaus.plexus:plexus-component-annotations:jar:1.7.1:provided
[INFO] | - org.apache.commons:commons-lang3:jar:3.8.1:provided
[INFO] - org.apache.maven.shared:maven-dependency-tree:jar:3.0.1:provided
[INFO] - org.eclipse.aether:aether-util:jar:0.9.0.M2:provided
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] dependency_test 1.0.0 .............................. SUCCESS [ 3.769 s]
[INFO] mod3 ............................................... SUCCESS [ 0.153 s]
[INFO] mod2 ............................................... SUCCESS [ 0.110 s]
[INFO] mod1 1.0.0 ......................................... SUCCESS [ 0.097 s]
[INFO] ------------------------------------------------------------------------


Thank you,










share|improve this question





















  • 1





    Have you tried to run mvn dependency:tree command? It might help

    – Valentin Carnu
    Mar 28 at 13:42












  • Thanks for your answer, I edit the question with the dependency:tree result (same issue, unfortunally...)

    – Alexandre Nedjari
    Mar 28 at 13:55











  • Did you try Maven dependency tree with output appended? It allows to aggregate the dependency trees of each module. mvn dependency:tree -DappendOutput -DoutputFile=/path/to/dependencyTree.txt

    – Mincong Huang
    Mar 29 at 21:24













2












2








2








I have a problem with maven dependencies. I try in my maven plugin to have a full dependencies graph, but some duplicated nodes does not appear.



My maven project is made of :



  • "dependency_test", the parent project of 4 modules

  • "mod1", "mod2", "mod3", "mod4", the child modules

  • "dependency_test_maven_plugin", the maven plugin project

here are the differents pom.xml files :



dependency_test :



 <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<modules>
<module>mod1</module>
<module>mod2</module>
<module>mod3</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod1</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod2</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod3</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod4</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.aned</groupId>
<artifactId>dependency_test_maven_plugin</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>


mod1 :



 <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod1</artifactId>
<dependencies>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod2</artifactId>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod3</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.aned</groupId>
<artifactId>dependency_test_maven_plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>dependency-test-goal</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>


mod2 :



<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod2</artifactId>
<dependencies>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod3</artifactId>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod4</artifactId>
</dependency>
</dependencies>
</project>


mod3 :



 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod3</artifactId>
</project>


mod4 :



 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod4</artifactId>
</project>


My dependency graph is so like :



mod1
--mod2
----mod3
----mod4
--mod3


I need to have this complete graph in my "dependency_test_maven_plugin" plugin. For now, it look like :



pom.xml



<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aned</groupId>
<artifactId>dependency_test_maven_plugin</artifactId>
<version>1.0.0</version>
<packaging>maven-plugin</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-dependency-tree</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
</project>


Mojo class :



package dependency_test_maven_plugin;

import java.util.Arrays;

import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.DefaultProjectBuildingRequest;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
import org.apache.maven.shared.dependency.graph.DependencyNode;
import org.apache.maven.shared.dependency.graph.traversal.CollectingDependencyNodeVisitor;

@Mojo(name = "dependency-test-goal", defaultPhase = LifecyclePhase.PROCESS_RESOURCES, requiresDependencyCollection = ResolutionScope.COMPILE_PLUS_RUNTIME, requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME)
public class JLinkMojo extends AbstractMojo

@Parameter(defaultValue = "$project", readonly = true, required = true)
MavenProject project;

@Parameter(defaultValue = "$session", readonly = true, required = true)
private MavenSession session;

@Component(hint = "default")
private DependencyGraphBuilder dependencyGraphBuilder;

ArtifactFilter artifactFilter;
ProjectBuildingRequest buildingRequest;

public void execute() throws MojoExecutionException
artifactFilter = new ExcludesArtifactFilter(Arrays.asList("com.aned:dependency_test_maven_plugin"));
buildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());

buildingRequest.setProject(project);

try
DependencyNode rootNode = dependencyGraphBuilder.buildDependencyGraph(buildingRequest, artifactFilter);
getLog().info("Start depdendency graph");
int level = 0;
displayNode(rootNode, level);
getLog().info("End depdendency graph");

CollectingDependencyNodeVisitor visitor = new CollectingDependencyNodeVisitor();
rootNode.accept(visitor);

for (DependencyNode dependencyNode : visitor.getNodes())
getLog().info("Start depdendency graph for node " + dependencyNode.getArtifact().getArtifactId());
displayNode(dependencyNode, level);
getLog().info("End depdendency graph for node " + dependencyNode.getArtifact().getArtifactId());


catch (DependencyGraphBuilderException e)
throw new MojoExecutionException("Error", e);



private void displayNode(DependencyNode rootNode, int level)
String indentation = "";
for (int i = 0; i < level; i++)
indentation += "--";

getLog().info(indentation + rootNode.getArtifact().getArtifactId());

for (DependencyNode childrenNode : rootNode.getChildren())
displayNode(childrenNode, level + 1);





On execution, the mojo traces are :



[INFO] --- dependency_test_maven_plugin:1.0.0:dependency-test-goal (default) @ mod1 ---
[INFO] Start depdendency graph
[INFO] mod1
[INFO] --mod2
[INFO] ----mod4
[INFO] --mod3
[INFO] End depdendency graph
[INFO] Start depdendency graph for node mod1
[INFO] mod1
[INFO] --mod2
[INFO] ----mod4
[INFO] --mod3
[INFO] End depdendency graph for node mod1
[INFO] Start depdendency graph for node mod2
[INFO] mod2
[INFO] --mod4
[INFO] End depdendency graph for node mod2
[INFO] Start depdendency graph for node mod4
[INFO] mod4
[INFO] End depdendency graph for node mod4
[INFO] Start depdendency graph for node mod3
[INFO] mod3
[INFO] End depdendency graph for node mod3


So, in the dependency graph traces like in visitor.getNodes traces, the dependency from mod2 to mod3 is not visible (I think it's because it's a duplicate of the link from mod1 to mod3).
Is there a way to have the complete trace :



mod1
--mod2
----mod3
----mod4
--mod3


Edit 1 : If I try to use dependency:tree on my parent project, I got the same result :



[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ mod1 ---
[INFO] com.aned.test:mod1:jar:1.0.0
[INFO] +- com.aned.test:mod2:jar:1.0.0:compile
[INFO] | - com.aned.test:mod4:jar:1.0.0:compile
[INFO] +- com.aned.test:mod3:jar:1.0.0:compile
[INFO] - com.aned:dependency_test_maven_plugin:jar:1.0.0:provided
[INFO] +- org.apache.maven:maven-plugin-api:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-model:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-artifact:jar:3.6.0:provided
[INFO] | +- org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.3:provided
[INFO] | | - javax.enterprise:cdi-api:jar:1.0:provided
[INFO] | | - javax.annotation:jsr250-api:jar:1.0:provided
[INFO] | +- org.codehaus.plexus:plexus-utils:jar:3.1.0:provided
[INFO] | - org.codehaus.plexus:plexus-classworlds:jar:2.5.2:provided
[INFO] +- org.apache.maven:maven-project:jar:2.2.1:provided
[INFO] | +- org.apache.maven:maven-settings:jar:2.2.1:provided
[INFO] | +- org.apache.maven:maven-profile:jar:2.2.1:provided
[INFO] | +- org.apache.maven:maven-artifact-manager:jar:2.2.1:provided
[INFO] | | +- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-6:provided
[INFO] | | - backport-util-concurrent:backport-util-concurrent:jar:3.1:provided
[INFO] | +- org.apache.maven:maven-plugin-registry:jar:2.2.1:provided
[INFO] | +- org.codehaus.plexus:plexus-interpolation:jar:1.11:provided
[INFO] | - org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:provided
[INFO] | +- junit:junit:jar:3.8.1:provided
[INFO] | - classworlds:classworlds:jar:1.1-alpha-2:provided
[INFO] +- org.apache.maven:maven-core:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-settings-builder:jar:3.6.0:provided
[INFO] | | - org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4:provided
[INFO] | | - org.sonatype.plexus:plexus-cipher:jar:1.4:provided
[INFO] | +- org.apache.maven:maven-builder-support:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-repository-metadata:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-model-builder:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-resolver-provider:jar:3.6.0:provided
[INFO] | | - org.slf4j:slf4j-api:jar:1.7.25:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-impl:jar:1.3.1:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-api:jar:1.3.1:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-spi:jar:1.3.1:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-util:jar:1.3.1:provided
[INFO] | +- org.apache.maven.shared:maven-shared-utils:jar:3.2.1:provided
[INFO] | | - commons-io:commons-io:jar:2.5:provided
[INFO] | +- org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.3:provided
[INFO] | +- com.google.inject:guice:jar:no_aop:4.2.1:provided
[INFO] | | +- aopalliance:aopalliance:jar:1.0:provided
[INFO] | | - com.google.guava:guava:jar:25.1-android:provided
[INFO] | | +- com.google.code.findbugs:jsr305:jar:3.0.2:provided
[INFO] | | +- org.checkerframework:checker-compat-qual:jar:2.0.0:provided
[INFO] | | +- com.google.errorprone:error_prone_annotations:jar:2.1.3:provided
[INFO] | | +- com.google.j2objc:j2objc-annotations:jar:1.1:provided
[INFO] | | - org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:provided
[INFO] | +- javax.inject:javax.inject:jar:1:provided
[INFO] | +- org.codehaus.plexus:plexus-component-annotations:jar:1.7.1:provided
[INFO] | - org.apache.commons:commons-lang3:jar:3.8.1:provided
[INFO] - org.apache.maven.shared:maven-dependency-tree:jar:3.0.1:provided
[INFO] - org.eclipse.aether:aether-util:jar:0.9.0.M2:provided
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] dependency_test 1.0.0 .............................. SUCCESS [ 3.769 s]
[INFO] mod3 ............................................... SUCCESS [ 0.153 s]
[INFO] mod2 ............................................... SUCCESS [ 0.110 s]
[INFO] mod1 1.0.0 ......................................... SUCCESS [ 0.097 s]
[INFO] ------------------------------------------------------------------------


Thank you,










share|improve this question
















I have a problem with maven dependencies. I try in my maven plugin to have a full dependencies graph, but some duplicated nodes does not appear.



My maven project is made of :



  • "dependency_test", the parent project of 4 modules

  • "mod1", "mod2", "mod3", "mod4", the child modules

  • "dependency_test_maven_plugin", the maven plugin project

here are the differents pom.xml files :



dependency_test :



 <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<modules>
<module>mod1</module>
<module>mod2</module>
<module>mod3</module>
</modules>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod1</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod2</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod3</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod4</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.aned</groupId>
<artifactId>dependency_test_maven_plugin</artifactId>
<version>1.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>


mod1 :



 <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod1</artifactId>
<dependencies>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod2</artifactId>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod3</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.aned</groupId>
<artifactId>dependency_test_maven_plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>dependency-test-goal</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>


mod2 :



<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod2</artifactId>
<dependencies>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod3</artifactId>
</dependency>
<dependency>
<groupId>com.aned.test</groupId>
<artifactId>mod4</artifactId>
</dependency>
</dependencies>
</project>


mod3 :



 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod3</artifactId>
</project>


mod4 :



 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.aned.test</groupId>
<artifactId>dependency_test</artifactId>
<version>1.0.0</version>
</parent>
<artifactId>mod4</artifactId>
</project>


My dependency graph is so like :



mod1
--mod2
----mod3
----mod4
--mod3


I need to have this complete graph in my "dependency_test_maven_plugin" plugin. For now, it look like :



pom.xml



<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aned</groupId>
<artifactId>dependency_test_maven_plugin</artifactId>
<version>1.0.0</version>
<packaging>maven-plugin</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-plugin-api</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.plugin-tools</groupId>
<artifactId>maven-plugin-annotations</artifactId>
<version>3.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-project</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.6.0</version>
</dependency>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-dependency-tree</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
</project>


Mojo class :



package dependency_test_maven_plugin;

import java.util.Arrays;

import org.apache.maven.artifact.resolver.filter.ArtifactFilter;
import org.apache.maven.artifact.resolver.filter.ExcludesArtifactFilter;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.DefaultProjectBuildingRequest;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
import org.apache.maven.shared.dependency.graph.DependencyNode;
import org.apache.maven.shared.dependency.graph.traversal.CollectingDependencyNodeVisitor;

@Mojo(name = "dependency-test-goal", defaultPhase = LifecyclePhase.PROCESS_RESOURCES, requiresDependencyCollection = ResolutionScope.COMPILE_PLUS_RUNTIME, requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME)
public class JLinkMojo extends AbstractMojo

@Parameter(defaultValue = "$project", readonly = true, required = true)
MavenProject project;

@Parameter(defaultValue = "$session", readonly = true, required = true)
private MavenSession session;

@Component(hint = "default")
private DependencyGraphBuilder dependencyGraphBuilder;

ArtifactFilter artifactFilter;
ProjectBuildingRequest buildingRequest;

public void execute() throws MojoExecutionException
artifactFilter = new ExcludesArtifactFilter(Arrays.asList("com.aned:dependency_test_maven_plugin"));
buildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());

buildingRequest.setProject(project);

try
DependencyNode rootNode = dependencyGraphBuilder.buildDependencyGraph(buildingRequest, artifactFilter);
getLog().info("Start depdendency graph");
int level = 0;
displayNode(rootNode, level);
getLog().info("End depdendency graph");

CollectingDependencyNodeVisitor visitor = new CollectingDependencyNodeVisitor();
rootNode.accept(visitor);

for (DependencyNode dependencyNode : visitor.getNodes())
getLog().info("Start depdendency graph for node " + dependencyNode.getArtifact().getArtifactId());
displayNode(dependencyNode, level);
getLog().info("End depdendency graph for node " + dependencyNode.getArtifact().getArtifactId());


catch (DependencyGraphBuilderException e)
throw new MojoExecutionException("Error", e);



private void displayNode(DependencyNode rootNode, int level)
String indentation = "";
for (int i = 0; i < level; i++)
indentation += "--";

getLog().info(indentation + rootNode.getArtifact().getArtifactId());

for (DependencyNode childrenNode : rootNode.getChildren())
displayNode(childrenNode, level + 1);





On execution, the mojo traces are :



[INFO] --- dependency_test_maven_plugin:1.0.0:dependency-test-goal (default) @ mod1 ---
[INFO] Start depdendency graph
[INFO] mod1
[INFO] --mod2
[INFO] ----mod4
[INFO] --mod3
[INFO] End depdendency graph
[INFO] Start depdendency graph for node mod1
[INFO] mod1
[INFO] --mod2
[INFO] ----mod4
[INFO] --mod3
[INFO] End depdendency graph for node mod1
[INFO] Start depdendency graph for node mod2
[INFO] mod2
[INFO] --mod4
[INFO] End depdendency graph for node mod2
[INFO] Start depdendency graph for node mod4
[INFO] mod4
[INFO] End depdendency graph for node mod4
[INFO] Start depdendency graph for node mod3
[INFO] mod3
[INFO] End depdendency graph for node mod3


So, in the dependency graph traces like in visitor.getNodes traces, the dependency from mod2 to mod3 is not visible (I think it's because it's a duplicate of the link from mod1 to mod3).
Is there a way to have the complete trace :



mod1
--mod2
----mod3
----mod4
--mod3


Edit 1 : If I try to use dependency:tree on my parent project, I got the same result :



[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ mod1 ---
[INFO] com.aned.test:mod1:jar:1.0.0
[INFO] +- com.aned.test:mod2:jar:1.0.0:compile
[INFO] | - com.aned.test:mod4:jar:1.0.0:compile
[INFO] +- com.aned.test:mod3:jar:1.0.0:compile
[INFO] - com.aned:dependency_test_maven_plugin:jar:1.0.0:provided
[INFO] +- org.apache.maven:maven-plugin-api:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-model:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-artifact:jar:3.6.0:provided
[INFO] | +- org.eclipse.sisu:org.eclipse.sisu.plexus:jar:0.3.3:provided
[INFO] | | - javax.enterprise:cdi-api:jar:1.0:provided
[INFO] | | - javax.annotation:jsr250-api:jar:1.0:provided
[INFO] | +- org.codehaus.plexus:plexus-utils:jar:3.1.0:provided
[INFO] | - org.codehaus.plexus:plexus-classworlds:jar:2.5.2:provided
[INFO] +- org.apache.maven:maven-project:jar:2.2.1:provided
[INFO] | +- org.apache.maven:maven-settings:jar:2.2.1:provided
[INFO] | +- org.apache.maven:maven-profile:jar:2.2.1:provided
[INFO] | +- org.apache.maven:maven-artifact-manager:jar:2.2.1:provided
[INFO] | | +- org.apache.maven.wagon:wagon-provider-api:jar:1.0-beta-6:provided
[INFO] | | - backport-util-concurrent:backport-util-concurrent:jar:3.1:provided
[INFO] | +- org.apache.maven:maven-plugin-registry:jar:2.2.1:provided
[INFO] | +- org.codehaus.plexus:plexus-interpolation:jar:1.11:provided
[INFO] | - org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9-stable-1:provided
[INFO] | +- junit:junit:jar:3.8.1:provided
[INFO] | - classworlds:classworlds:jar:1.1-alpha-2:provided
[INFO] +- org.apache.maven:maven-core:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-settings-builder:jar:3.6.0:provided
[INFO] | | - org.sonatype.plexus:plexus-sec-dispatcher:jar:1.4:provided
[INFO] | | - org.sonatype.plexus:plexus-cipher:jar:1.4:provided
[INFO] | +- org.apache.maven:maven-builder-support:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-repository-metadata:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-model-builder:jar:3.6.0:provided
[INFO] | +- org.apache.maven:maven-resolver-provider:jar:3.6.0:provided
[INFO] | | - org.slf4j:slf4j-api:jar:1.7.25:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-impl:jar:1.3.1:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-api:jar:1.3.1:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-spi:jar:1.3.1:provided
[INFO] | +- org.apache.maven.resolver:maven-resolver-util:jar:1.3.1:provided
[INFO] | +- org.apache.maven.shared:maven-shared-utils:jar:3.2.1:provided
[INFO] | | - commons-io:commons-io:jar:2.5:provided
[INFO] | +- org.eclipse.sisu:org.eclipse.sisu.inject:jar:0.3.3:provided
[INFO] | +- com.google.inject:guice:jar:no_aop:4.2.1:provided
[INFO] | | +- aopalliance:aopalliance:jar:1.0:provided
[INFO] | | - com.google.guava:guava:jar:25.1-android:provided
[INFO] | | +- com.google.code.findbugs:jsr305:jar:3.0.2:provided
[INFO] | | +- org.checkerframework:checker-compat-qual:jar:2.0.0:provided
[INFO] | | +- com.google.errorprone:error_prone_annotations:jar:2.1.3:provided
[INFO] | | +- com.google.j2objc:j2objc-annotations:jar:1.1:provided
[INFO] | | - org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:provided
[INFO] | +- javax.inject:javax.inject:jar:1:provided
[INFO] | +- org.codehaus.plexus:plexus-component-annotations:jar:1.7.1:provided
[INFO] | - org.apache.commons:commons-lang3:jar:3.8.1:provided
[INFO] - org.apache.maven.shared:maven-dependency-tree:jar:3.0.1:provided
[INFO] - org.eclipse.aether:aether-util:jar:0.9.0.M2:provided
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] dependency_test 1.0.0 .............................. SUCCESS [ 3.769 s]
[INFO] mod3 ............................................... SUCCESS [ 0.153 s]
[INFO] mod2 ............................................... SUCCESS [ 0.110 s]
[INFO] mod1 1.0.0 ......................................... SUCCESS [ 0.097 s]
[INFO] ------------------------------------------------------------------------


Thank you,







java maven maven-3






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Mar 28 at 13:54







Alexandre Nedjari

















asked Mar 28 at 13:19









Alexandre NedjariAlexandre Nedjari

162 bronze badges




162 bronze badges










  • 1





    Have you tried to run mvn dependency:tree command? It might help

    – Valentin Carnu
    Mar 28 at 13:42












  • Thanks for your answer, I edit the question with the dependency:tree result (same issue, unfortunally...)

    – Alexandre Nedjari
    Mar 28 at 13:55











  • Did you try Maven dependency tree with output appended? It allows to aggregate the dependency trees of each module. mvn dependency:tree -DappendOutput -DoutputFile=/path/to/dependencyTree.txt

    – Mincong Huang
    Mar 29 at 21:24












  • 1





    Have you tried to run mvn dependency:tree command? It might help

    – Valentin Carnu
    Mar 28 at 13:42












  • Thanks for your answer, I edit the question with the dependency:tree result (same issue, unfortunally...)

    – Alexandre Nedjari
    Mar 28 at 13:55











  • Did you try Maven dependency tree with output appended? It allows to aggregate the dependency trees of each module. mvn dependency:tree -DappendOutput -DoutputFile=/path/to/dependencyTree.txt

    – Mincong Huang
    Mar 29 at 21:24







1




1





Have you tried to run mvn dependency:tree command? It might help

– Valentin Carnu
Mar 28 at 13:42






Have you tried to run mvn dependency:tree command? It might help

– Valentin Carnu
Mar 28 at 13:42














Thanks for your answer, I edit the question with the dependency:tree result (same issue, unfortunally...)

– Alexandre Nedjari
Mar 28 at 13:55





Thanks for your answer, I edit the question with the dependency:tree result (same issue, unfortunally...)

– Alexandre Nedjari
Mar 28 at 13:55













Did you try Maven dependency tree with output appended? It allows to aggregate the dependency trees of each module. mvn dependency:tree -DappendOutput -DoutputFile=/path/to/dependencyTree.txt

– Mincong Huang
Mar 29 at 21:24





Did you try Maven dependency tree with output appended? It allows to aggregate the dependency trees of each module. mvn dependency:tree -DappendOutput -DoutputFile=/path/to/dependencyTree.txt

– Mincong Huang
Mar 29 at 21:24












2 Answers
2






active

oldest

votes


















0
















What's happening: "mod3" resolves to the nearest parent.



I believe this falls under "dependency mediation" although that is more for version resolution.



To get the tree you expect you would have to buildDependencyGraph with the children as the root.






share|improve this answer
































    0
















    Not sure if this is what you're looking for, but you can see all dependencies (including duplicated) using:



    mvn dependency:tree -Dverbose





    share|improve this answer



























      Your Answer






      StackExchange.ifUsing("editor", function ()
      StackExchange.using("externalEditor", function ()
      StackExchange.using("snippets", function ()
      StackExchange.snippets.init();
      );
      );
      , "code-snippets");

      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "1"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );














      draft saved

      draft discarded
















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55398681%2fget-a-complete-dependency-graph-in-maven%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      0
















      What's happening: "mod3" resolves to the nearest parent.



      I believe this falls under "dependency mediation" although that is more for version resolution.



      To get the tree you expect you would have to buildDependencyGraph with the children as the root.






      share|improve this answer





























        0
















        What's happening: "mod3" resolves to the nearest parent.



        I believe this falls under "dependency mediation" although that is more for version resolution.



        To get the tree you expect you would have to buildDependencyGraph with the children as the root.






        share|improve this answer



























          0














          0










          0









          What's happening: "mod3" resolves to the nearest parent.



          I believe this falls under "dependency mediation" although that is more for version resolution.



          To get the tree you expect you would have to buildDependencyGraph with the children as the root.






          share|improve this answer













          What's happening: "mod3" resolves to the nearest parent.



          I believe this falls under "dependency mediation" although that is more for version resolution.



          To get the tree you expect you would have to buildDependencyGraph with the children as the root.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Apr 2 at 20:11









          solbssolbs

          2971 gold badge4 silver badges17 bronze badges




          2971 gold badge4 silver badges17 bronze badges


























              0
















              Not sure if this is what you're looking for, but you can see all dependencies (including duplicated) using:



              mvn dependency:tree -Dverbose





              share|improve this answer





























                0
















                Not sure if this is what you're looking for, but you can see all dependencies (including duplicated) using:



                mvn dependency:tree -Dverbose





                share|improve this answer



























                  0














                  0










                  0









                  Not sure if this is what you're looking for, but you can see all dependencies (including duplicated) using:



                  mvn dependency:tree -Dverbose





                  share|improve this answer













                  Not sure if this is what you're looking for, but you can see all dependencies (including duplicated) using:



                  mvn dependency:tree -Dverbose






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Apr 16 at 20:26









                  drkicknrushdrkicknrush

                  588 bronze badges




                  588 bronze badges































                      draft saved

                      draft discarded















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid …


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55398681%2fget-a-complete-dependency-graph-in-maven%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      How to preserve electronics (computers, tablets and phones) for hundreds of years Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) The network's official Twitter account is up and running again. What content…How might modern humans leave a message for 50,000 years?How would an aquatic race develop computers?How do we make computers care for human life?Keeping supplies for 1000 yearsWhat will cell phones become in 100 years?What body armor protects against a laser?Could a society attain 1800s technology if limited to using copper and bronze?Electricity power (magic) and electronicsScavenging metal resources in post-apocalypse after 100 yearsWhy would precursors create devices that can survive and still work after hundreds of years?

                      155 수학 과학 기타 둘러보기 메뉴eh추가해eh문서를 완성해

                      Convert JSON to MapSimplest way to convert a string representing JSON array into Java array List of key value pairsHow to take String JSON values into HashMapConvert a JSON String to a HashMapCreating BSON object from JSON stringJSONObject - How to get a value ?Better Map ConstructorReading JSON from Url javaUpdate columns if input values are not null otherwise ignore and keep the existing values of column in databaseHow to store object represented as Json string into Couchbase Lite?Go JSON into MapHow do I efficiently iterate over each entry in a Java Map?Sort a Map<Key, Value> by valuesHow to round a number to n decimal places in JavaCan comments be used in JSON?How do I read / convert an InputStream into a String in Java?How can I pretty-print JSON in a shell script?What is the correct JSON content type?How can I deserialize JSON to a simple Dictionary<string,string> in ASP.NET?Why does Google prepend while(1); to their JSON responses?Parse JSON in JavaScript?