On 06/05/2014 09:23 AM, Roman Muntyanu wrote:
Ok, I rephrase my question. Could you define what you consider a usage of dependency A because of B and the opposite?
I'll dare explaining
Indirect dependency (no dependency on A should be defined in C): C ----> B ----> A * C uses classes from B * B uses classes from A * C does NOT use classes from A
This will NOT be reported by dependency:analyze, so this shouldn't be declared as a dependency of C, ever.
Direct dependency (explicit dependency on A should be defined in C) C ----> B ----> A \_ _ _ _ _ _ _^ * C uses classes from B * B uses classes from A * C uses classes from A
This is actually the topic of the discussion. It's not about what B uses, but what C uses. Since C uses A, it's obvious that it should declare it as a dependency, and not assume that B will be there to provide it, unless B is a "grouping" component, like xwiki-commons-test-components, which is supposed to bring everything needed for testing components. Big +1 for declaring all the used dependencies, except for "boilerplate" ones. +1 for not declaring the transitive dependencies of standard groups: testing tools chained to the commons-test-components, component modules chained to xwiki-commons-component-api -1 for declaring global dependencies, they're actually hidden inter-pom dependencies. -- Sergiu Dumitriu http://purl.org/net/sergiu