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
> >
>

Reply via email to