I believe what happens here is that the dependency declared closest to your project wins. But you can control this through dependencyManagement in your project.
/Anders On Tue, Jul 17, 2012 at 5:06 PM, Graham Crosmarie <[email protected]> wrote: > A defines a dependency on D with scope test and is a pom project > > B defines a dependency on D with compile (default) and is a jar project. > A is the parent pom of B. > When I run dependency:tree I get what I want for B : D with scope compile. > > I have other projects (C) whose parent is A and which depend on B with scope > compile(default). > My problem is that the D dependency for such projects is in scope test > (inherited from A) instead of scope compile (retrieved through the > dependency on B). > > In other words Maven chooses the wrong scope for my C projects. In fact, I > think it always takes the one from the before parent and ignores the one > from the dependency. > > > On 17/07/2012 15:29, Aliaksei Lahachou wrote: >> >> Hi! >> >> In parent A, so you define scope in dependency or dependency management >> section. If the latter, then it overrides scope of the transitive >> dependency. >> >> In which scope is dependency B? If it's in test scope, than its >> dependencies will be in test scope, too. >> >> It would be much easier if you could show the POMs. >> >> Regards, >> htfv (Aliaksei Lahachou) >> Am 17.07.2012 09:15 schrieb "Graham Crosmarie" < >> [email protected]>: >> >>> Hello, >>> >>> I have a problem with my dependency pattern and I am not sure that maven >>> behaves correctly in this case. >>> >>> Here is my case : >>> - I am using Maven 2.2.1. >>> - I have a project A which defines a dependency D with scope test. >>> - I have a project B whose parent is A and which defines D as a >>> dependency in scope compile. >>> - My project hierarchy defines a lot of projects whose parent is A >>> and >>> who have B as a dependency. >>> >>> My problem is : all these "subprojects" have D as dependency in scope >>> test >>> (from A). >>> I think that the correct behaviour would be to have D with scope compile >>> (from their dependency on B) because scope compile 'contains' scope test. >>> But Maven 2.2.1 does not work that way :-). >>> >>> Is there any way to force my projects to use the D scope from project B >>> instead of the one from its parent (project A) ? >>> >>> Thanks in avance, >>> >>> -- >>> Signature >>> Graham CROSMARIE >>> R&D Engineer >>> Linagora GSO -- www.linagora.com <http://www.linagora.com> >>> > > > -- > Signature > Graham CROSMARIE > R&D Engineer > Linagora GSO -- www.linagora.com <http://www.linagora.com> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
