I am having trouble with understanding what happens in maven dependency tree when it states version managed from x; omitted for duplicate.
For example, let's assume that I have enterprise-data-2.4
defined in the dependency management section of server-a
.
I get the following in the dependency tree of server-a
for one of the dependencies server-b
pulling in enterprise-data-2.4
.
[INFO] +- hello.world.welcome.to:server-b:jar:3.1-SNAPSHOT:runtime
[INFO] | +- (hello.world.where.am: enterprise-data:jar:2.4:runtime - version managed from 3.0; omitted for duplicate)
Assuming server-b
is the only jar pulling in enterprise-data-2.4
, my understanding is that server-a
will always pull in enterprise-data-2.4
here. Is this correct?
I however, have code in server-b
dependent on enterprise-data-3.0
and server-b
has a compile time dependency on enterprise-data-3.0
.
Now, I have a test project, let's say test-b
which tests server-b
jar present inside server-a
project and has a test dependency on enterprise-data-3.0
. These tests directly hit the code present on server-a
.
When I run my tests in test-b
should I get errors while attempting to access functionality present in enterprise-data-3.0
since it's not being pulled in by server-a
or will it pass because there is a test dependency on enterprise-data-3.0
? It passes currently but I am not sure how a test dependency is sufficient.
Please help me understand.
Edit: I am using maven-3
.
Thanks.