Then *DependencyTreeBuilder* is given an entry point (GAV) and is asked to construct the "dirty" tree. An here it starts - if, say, root is a:a:1.2.3, should we try to resolve \[1.2.3,) or stick to \[1.2.3,1.2.3\] ? We can clear this ambiguity by always treating the root of the tree as \[V,V\]. But how far should that go? If I am developing a multi-module project a:a:1.2.3-SNAPSHOT, I expect my root and all project internal dependencies to be on the same version, which is 1.2.3-SNAPSHOT. I can achieve it with either explicit \[V,V\] range definition, or have some magic in the *DependencyTreeBuilder*. The latter is always bad as sooner or later it will be abused by smart users to do something else and possibly break the dependency tree construction. This consideration leaves only one option open - always use \[V,V\]. But without a tool to automatically process those (release plugin for one) - it quickly becomes a burden for users. |