You're correct, and I think it is behaving as you expect. What I'm trying to be clear on (which is sometimes hard without pictures):
Let's say B depends on C. Let's say your current project's source code uses classes from all of A, B and C. You should declare all 3 dependencies, because you need to compile against them. You shouldn't rely on not declaring C because B will bring it in - because B might later change not to, or use a different version. Now, if you just use A, B - you only compile against A, B, but you run against A, B, C (because B needs C to run). The problem in Java is if C contains an abstract class implemented in B, you need to compile against C, even if you only use classes from A and B. :) On 06/04/2011, at 2:11 AM, Khai Do wrote: > Hi Brett. Maybe I don't understand. What do you mean when you say ".NET is > not burdened the same way"? As a best practice (for java projects) I follow > the pattern of only referencing top level modules and letting maven resolve > all the transitive dependencies for me on compile. I believe this is the > definition of dependency management. It seems like your suggesting that .NET > is not build the same way and I shouldn't follow this pattern for npanday > builds? Wouldn't this break maven's dependency management feature? -Khai > -- Brett Porter [email protected] http://brettporter.wordpress.com/ http://au.linkedin.com/in/brettporter
