Hi Rafael,

Thanks for your response.

My question surrounds dependencies, and while I understand how to
declare a dependency, what I want to know is how I make maven recompile
dependencies.

So if A depends on B, and I run 'mvn jar' in project B, how can I make
it recompile (and I guess, run 'mvn install') in A?  My scenerio is that
I will be making changes to both A and B, but both are separate projects
and I don't want to have to run 'mvn install' in A before doing anything
with project B.  Obviously, if A depends on B, A will not compile if B
has been modified in some way given A fetches A.jar from the repository.

Neither A or B share a common parent.  In fact, they could easily have
different parents.

Thanks,


John

> -----Original Message-----
> From: Rafael Trestini [mailto:[EMAIL PROTECTED] 
> Sent: 04 November 2008 18:32
> To: Maven Users List
> Subject: Re: Multiple project dependencies
> 
> John,
> 
> In this case, your parent pom (1st level pom.xml) will 
> inherit from 
> com.atlassian.concluence.plugin.base:confluence-plugin-base:17
> , and each module will inherit your parent pom. Example:
> /yourproject
>    pom.xml (your parent pom - inherits confluence plugin)
>       /module-a
>          pom.xml (your module-a pom - inherits parent pom)
>       /module-b
>          pom.xml (your module-b pom - inherits parent pom)
> 
> Using the structure from example, your parent pom would use 
> the following module declaration:
> <modules>
>    <module>module-a</module>
>    <module>module-b</module>
> </modules>
> 
> In this approach, maven will search for a subdirectory named 
> "module-a" and other named "module-b", each one containing a pom.xml.
> 
> Remembering: there's a significant difference between 
> inheritance and dependency. If you need to *use*, for 
> example, X.jar that contains shared and/or common code, the 
> relation between this jar and your project is a dependency, 
> and not a inheritance, because X.jar is not _part-of_ your 
> project. However, if you have a module inside your project 
> with common code that concerns exclusively to the project, 
> this module is _part-of_ and is shared with other modules 
> inside your project.
> 
> Hope it helps.
> 
> Rafael Trestini
> 
> On Tue, Nov 4, 2008 at 6:08 AM, 
> <[EMAIL PROTECTED]> wrote:
> >
> > Graham,
> >
> > Thanks for your advice.  I was wondering if parent/child 
> relationships 
> > were the answer.  However, there are two problems with this 
> approach.
> >
> > The first is that I'm writing a plugin to a product and it 
> created the 
> > maven project, and I note it's declared a parent:
> >
> >    <parent>
> >        <groupId>com.atlassian.confluence.plugin.base</groupId>
> >        <artifactId>confluence-plugin-base</artifactId>
> >        <version>17</version>
> >    </parent>
> >
> > So, my plugin already depends on the Confluence Plugin base, and 
> > depends on my common code pom.  How is this structured?
> >
> > The second is that I'm still somewhat unfamilar with the directory 
> > structure for the parent/child relationships.  If I had poarent 
> > project and two child projects, how does the <parent> tag 
> of the child 
> > project know where to find the parent project (on the filesystem).
> >
> > Thanks,
> >
> >
> > John
> >
> > > -----Original Message-----
> > > From: Graham Leggett [mailto:[EMAIL PROTECTED]
> > > Sent: 03 November 2008 21:00
> > > To: Maven Users List
> > > Subject: Re: Multiple project dependencies
> > >
> > > [EMAIL PROTECTED] wrote:
> > >
> > > >> I'm new to maven and I have a question regarding multiple 
> > > >> projects and how the can be linked.  I've created a 
> "common code"
> > > project, and
> > > >> I have another which depends upon this project.  I've got two 
> > > >> directories, two pom files, etc., and the common code 
> project can 
> > > >> generate a jar file (mvn jar:jar).  The other project has a 
> > > >> dependency in the pom.xml file:
> > > >>
> > > >>         <dependency>
> > > >>                 <groupId>com.x.common</groupId>
> > > >>                 <artifactId>x.common</artifactId>
> > > >>                 <version>0.0.1-SNAPSHOT</version>
> > > >>         </dependency>
> > > >>
> > > >> When the mvn process runs, it contacts the repositories
> > > and tries to
> > > >> download this dependency, which will obviously fail.  How do I 
> > > >> configure mvn to look locally for a dependency, and in
> > > this case, run
> > > >> mvn jar:jar in the common project directory to obtain the 
> > > >> required jar?
> > >
> > > It depends on how you want to structure your code.
> > >
> > > If the common code is likely to follow it's own release 
> cycle, make 
> > > a formal release of the common code, and then make your 
> code depend 
> > > on that formal release. Don't do this manually, use the release 
> > > plugin to do this for you.
> > >
> > > If the common code is likely to change alongside the 
> other code, you 
> > > might choose to build and release all the jars together in one go.
> > >
> > > What you want to do is create a multi-module project by 
> creating a 
> > > parent pom project, and add each of the multi modules as 
> children of 
> > > this parent, using the <module> element in the pom. In each child 
> > > project, add the <parent> tag pointing back to the parent pom.
> > >
> > > When you build the parent, all the modules listed within 
> the parent 
> > > will be built.
> > >
> > > If your dependencies are configured correctly, maven will 
> figure out 
> > > for itself what order things should be built in.
> > >
> > > Hint: in your children projects, make them inherit the parent's 
> > > version by putting in ${pom.version} as a variable.
> > > For example:
> > >
> > >           <dependency>
> > >                   <groupId>com.x.common</groupId>
> > >                   <artifactId>x.common</artifactId>
> > >                   <version>${pom.version}</version>
> > >           </dependency>
> > >
> > > When you release the parent, the children will be released and 
> > > versioned automatically.
> > >
> > > Regards,
> > > Graham
> > > --
> > >
> > _______________________________________________
> >
> > This e-mail may contain information that is confidential, 
> privileged or otherwise protected from disclosure. If you are 
> not an intended recipient of this e-mail, do not duplicate or 
> redistribute it by any means. Please delete it and any 
> attachments and notify the sender that you have received it 
> in error. Unless specifically indicated, this e-mail is not 
> an offer to buy or sell or a solicitation to buy or sell any 
> securities, investment products or other financial product or 
> service, an official confirmation of any transaction, or an 
> official statement of Barclays. Any views or opinions 
> presented are solely those of the author and do not 
> necessarily represent those of Barclays. This e-mail is 
> subject to terms available at the following link: 
> www.barcap.com/emaildisclaimer. By messaging with Barclays 
> you consent to the foregoing.  Barclays Capital is the 
> investment banking division of Barclays Bank PLC, a company 
> registered in England (number 1026167) with its registered 
> office at 1 Churchill Place, London, E14 5HP.  This email may 
> relate to or be sent from other members of the Barclays Group.
> > _______________________________________________
> >
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> 
> 
> 
> --
> Responsibility is the price of freedom
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
_______________________________________________

This e-mail may contain information that is confidential, privileged or 
otherwise protected from disclosure. If you are not an intended recipient of 
this e-mail, do not duplicate or redistribute it by any means. Please delete it 
and any attachments and notify the sender that you have received it in error. 
Unless specifically indicated, this e-mail is not an offer to buy or sell or a 
solicitation to buy or sell any securities, investment products or other 
financial product or service, an official confirmation of any transaction, or 
an official statement of Barclays. Any views or opinions presented are solely 
those of the author and do not necessarily represent those of Barclays. This 
e-mail is subject to terms available at the following link: 
www.barcap.com/emaildisclaimer. By messaging with Barclays you consent to the 
foregoing.  Barclays Capital is the investment banking division of Barclays 
Bank PLC, a company registered in England (number 1026167) with its registered 
office at 1 Churchill Place, London, E14 5HP.  This email may relate to or be 
sent from other members of the Barclays Group.
_______________________________________________

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to