Builds in the reactor are always favoured over the m2 repo because the builds in the reactor will be up-to-date whereas the jar in the repo may be out of date.
If you run mvn compile in directory B then you will not be running a multi module build - and therefore module A will not be in the reactor. This is why the m2 repo will always be used for module A in this scenario. Joe -----Original Message----- From: Siddharth Jain <siddh...@gmail.com> Sent: Thursday, February 15, 2024 7:50 PM To: Maven Users List <users@maven.apache.org> Subject: Re: How does maven resolve inter-module dependencies in a multi-module build? External Email: Please be vigilant and check the contents and source for signs of malicious activity. thanks Joe. but then if classes are available both in the target directory of module A as well as a jar file in M2 repository which takes precedence? also i have noticed that while running mvn compile from the root works, running mvn compile from the directory of B does not pick up classes from A's target directory. it only picks up from M2 repo in that case. On Thu, Feb 15, 2024 at 11:28 AM Joseph Leonard < joseph.leon...@alfasystems.com> wrote: > Hi Sid, > It will resolve the classes directory of module A that will have been > populated during module A's 'compile' build. > Joe > > On 2024/02/15 17:50:44 Siddharth Jain wrote: > > Hello, > > > > I am working on a multi-module Maven build. e.g., I have a root > > directory containing 3 sub-projects A, B, C and a parent pom defined > > in the root directory. I notice that I can run mvn compile from the > > root directory > and > > it will build the 3 projects. The projects may have > > inter-dependencies e.g., B depends on A and let's say C depends on both A > > and B. > > > > My question is while building B how does maven locate the compiled > > code > of > > A (the dependency) since maven compile by itself does not install > > the > built > > artifact into M2 repository? > > > > Sid > > >