Alexandre,

Let me see if I understand correctly by asking some questions, I am very new to 
maven & ant so please excuse the newbie nature of these.

Currently we have one ant script that builds all of our components/applications 
synchronously every 15 minutes after a check in.  So we create full builds 
often.  This works well as we always have the latest build to test/release etc. 
 However we have poor version control to support releases, service packs, etc 
and it doesn't scale well to using these same components in parallel project 
builds.  So I am looking to maven2 to see if I can get a better system & 
practice.

So given your description, it seems I would need SNAPSHOT builds that build 
after each check in (with some delay) else I would not have my continuous 
builds.  (Waiting for a nightly build would be too long.  Our testers work 
right with developers and we often want to fix something and get them a build 
asap.  And it may be this build that we release if it has the quality they are 
looking for!)

In our case the big question is...when do we create component releases?  In 
reality we don't have 'official' releases of many internal components because 
who cares?  All each project cares about is two things; first if I am dependent 
on the new stuff being developed in a component I want the latest.  On the 
other hand, if I am satisfied with the content of a component the way it is, I 
don't want changes wrecking my build so a released versioned component that 
doesn't change is what I want.

How can I get this with maven?  I could do SNAPSHOTS as the norm and then 
specify versions once it surpasses a certain milestone.  However, it seems I 
would always be looking back applying a version once I already have released a 
product with a SNAPSHOT.  This doesn't seem like the way to use maven.

By the way, what do you use to do the continuous build part of the system?  Is 
Continuum ready?  How about QuickBuild or CruiseControl?  How do these 
integrate?  Do they label the source, apply the right value to the <version> 
tag in the pom, and keep track of incrementing the build number?

Also, I assume in maven that each artifact/pom should be built in an autonomous 
manor, each with its own automation script.  Is this correct?

As for the enterprise snapshot repository; isn't this the same repository as 
the versioned one?

I think that if I get the big picture of how to use maven2 in an aggressive 
continuous build system I can get going with it, right now I feel I don't know 
how to begin.  (I have ordered a maven book but it isn't published yet.)

Any ideas/suggestions are greatly appreciated.  

-dh



-----Original Message-----
From: Alexandre Poitras [mailto:[EMAIL PROTECTED] 
Sent: Monday, February 20, 2006 6:13 PM
To: Maven Users List
Subject: Re: [m2] Newbie dependency question

>From what I understand you want to use the fresh version of some
components that are still in development, what is usually called a
night build or a snapshot. You should declare their version as
1.0-SNAPSHOT or something like that. Then you just need to setup an
enterprise snapshot repository wich always give you the lastest
snapshot of your artefacts.

When the components actually go throught a new release, I suggest you
to update the dependencies version manually when new versions come out
so you can test if everything still work ok.

On 2/20/06, Dave Hoffer <[EMAIL PROTECTED]> wrote:
> Being new to maven I have so basic questions regarding best practices in
> maven.  Specifically, I want to know what the recommended practice is in
> configuring projects that have dependencies which is all but the most
> basic of applications.  In our company we develop applications that are
> comprised of several components that we create.
>
> As I understand maven, all artifacts have the version in the jar name.
> This is great in one sense as it lets your project(s) refer to the
> specific jar version that you want.  However, it causes problems also
> because ideally we want our applications to work with the 'latest'
> version of all of our components.  It seems the default maven behavior
> would encourage our applications and components to be created to
> something other than the 'latest' version.
>
> I would like to setup our IntelliJ projects and our continuous
> integration build system to generally use the 'latest' version of
> components so that we attempt to minimize code that is written to old
> components.
>
> How can this be accomplished in maven2?  What are the best practices?
>
> Thanks!
>
> -dh
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


--
Alexandre Poitras
Québec, Canada

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


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

Reply via email to