Edit: "Reverse Dependency analysis" would have been the keyword for what i searched - unfortunately I was not able to proper describe my question (maybe it has something to do with this not beeing a standard thing - i acctually dont even have a real usecase for this).
Say i have a typical convergence issue and the dependency:tree tells me something like this:
[INFO] com.my.group:myProject:jar:1.0.1
[INFO] +- org.not.my.group:a-direct-dependency:jar:1.1:compile
[INFO] | \- org.not.my.group:transitive-dependency-A:jar:1.14.0:compile
[INFO] \- org.not.my.group:another-direct-dependency:jar:1.1:compile
[INFO] \- (org.not.my.group:transitive-dependency-A:jar:1.18.0:compile - omitted for conflict with 1.14.0)
is there a way to analyze a central repository (with nexus webgui available as well) to find out if there is a (newer) version of org.not.my.group:a-direct-dependency:jar
that relies on the transitive dependency org.not.my.group:transitive-dependency-A:jar
but in version 1.18.0 instead of 1.14.0?
Or generally asked: Can i find out who is depending on a artifact via the central repository (or any remote repository) similar as i would find it out using this locally?:
mvn dependency:tree -Dincludes=org.not.my.group:transitive-dependency-A:jar:1.18.0 -Dverbose
For further clarification: In the above (fictive) szenario i would solve the convergence issue using three "levels" of solutions whereas the first will whenever possible be the choice and the latest is "a dirty correction".
1 - Allign versions: If my dependencies - own or third party - direct or transitive - do rely on the same artifact X but define a different version i preferably try to find a newer release of X or a dependency in the tree to X that has a common version to the rest of the dependencies. This way i assume "a proper upgrade" of X because they may needed to apply code changes.
2 - exclude dependency: If i am not able to find such a artifact i will successivly try to exclude the lower versions in the hope the dependency that has this exclusion can handle the newer version. This requires intense testing since i dont have the guarantee of a newer release that properly points to the version - i basicially tell maven "this dependency will work with another dependency of version as well even thus i have no idear of the internal design of this dependency" - even if compilation works i may still experience runtime issues.
3 - use dependencyManagement: Since using the dependencyManagement can lead to "mask" (hide/outpass) certain convergence issues for the enforcer plugin i acctually dont consider this a solution (for my setup) anymore .... say i experienced a convergence issue and solved it using the dependencyManagement - later - one of the transitive dependencies changes and lead to a similar convergence issue that the enforcer plugin is not able to detect anymore.
Side-Note: I wish my English would be better so it would be easier for me to describe such specific topics ... and in the end easier for you guys to understand me. Thanks for the input i already received :)