whoops I pushed send by accident here the true email

On 2/22/06, Alexandre Poitras <[EMAIL PROTECTED]> wrote:
> On 2/21/06, Dave Hoffer <[EMAIL PROTECTED]> wrote:
> > Alexandre,
> >
> > I have some further questions below...
> >
> >
> > -----Original Message-----
> > From: Alexandre Poitras [mailto:[EMAIL PROTECTED]
> > Sent: Tuesday, February 21, 2006 9:52 PM
> > To: Maven Users List
> > Subject: Re: [m2] Newbie dependency question
> >
> > About the version, the best practices recommend to keep a separate
> > build for bug maintenance (using a separate SCM branch) and one for
> > adding new features (the trunk). You usually set some features
> > milestones and each time you complete one, you can release a new major
> > version, for instance 1.0, 2.0, ... The tricky part here is that you
> > have to merge your branch with the trunk often to resolve the bug
> > quickly and avoid big conflicts. When you do that, you usually ugrade
> > the minor version, for instance 1.0 to 1.0.1. I
> >
> > [dh] ok.
> >
> > In the mean time, you provide Snapshots in case some developpers need
> > the latest bug fixes. Maven2 handle Snapshot very well.  For instance,
> > today I was debugging some components and I was able to publish about
> > 10 snapshots to our repository. Each time I was deploying it, one of
> > my coworker was immediatly testing it in an application. Maven always
> > downloaded the lastest one without any problem, granted the dependency
> > was deployed in a snapshot repository and the lookup policy was set to
> > always check for a newer version (there is 3 suppported types of
> > repositories "release", "snaphot" and "plugins" but usually you use
> > the same location for the three).
> >
> > [dh] So you have 10 components each with versioned releases and Snapshots?  
> > The applications that use these 10 components specify their dependencies as 
> > needing the versioned releases but because 'the lookup policy was set to
> > always check for a newer version' it grabs the Snapshots instead?
>
 No sorry, I guess I wasn't clear enoug. We we're doing some
 performance testing so I deployed 10 versions of the same componet.
 The application always grabbed the snapshot because it declared a
 dependency on the component with a version 1.0-SNAPSHOT specified.
> >
> > [dh] How do you configure your applications to set 'the lookup policy was 
> > set to always check for a newer version'?
>
 In your pom.xml, you have to define your release and snapshot
 repositories. There you can add an "updatePolicy" element with it
value set to always.
> >
> > [dh] Can you configure your application to look for newer versioned 
> > components as well as Snapshots?
I don't know the answer to this question, I am still wondering the
same but I prefer to update the version number myself to test if my
build doesn't break with a new version.
> >
> > [dh] If this is true it seems you could ship your application with 
> > Snapshots if you forgot to turn off the policy to check for a newer version.
> >
No, if you use the release plugin when you make  a release, you will
an error if you have snapshot dependencies. Maven is pretty smart ;)

> >
> > So basically, the other developers you are working with can use one of
> > your components by declaring it as a dependency in their project pom.
> > What is really important is that they state the correct version
> > number, ie if they want the official version 1.0, they should just put
> > 1.0 but if they want always the latest build, they should put
> > something like 1.0-SNAPSHOT. Using an official version you are sure
> > your project will always build but you won't have your latest bug
> > fixes available. For internal components, I am usually comfortable to
> > use SNAPSHOT versions (until the release of course, not after) but not
> > when it is an external dependency.
> >
> > [dh] So you could go right up to app release using SNAPSHOT and then start 
> > changing to specifying versioned components?
Yes, if you want to but if in the mean time a new component release is
made, for instance 2.0, then you have to update your project to use
the version 2.0-SNAPSHOT instead of 1.0-SNAPSHOT.

> >
> > [dh] The problem I see is that since the (internal) components have been at 
> > SNAPSHOT for so long nobody would know what version to set it to.  You 
> > would have to look at the history of labels/branches, check the version 
> > number and increment the appropriate version (major/minor/sp) number by 
> > one.  This would be entirely manual and subject to possible errors.
> >
See my previous answer, snapshots still care about the version, it
just allow you to deploy many quick releases (Maven just add a
timestamp to your dependency name).

> > [dh] It seems this approach eliminates any need for a build number. 
> > SNAPSHOT becomes the build number and it's the same for all builds.  I'm 
> > not clear if this is good or bad yet.
> >
See the previous answer again :)

> >
> > Take a look there to have more details on the good practices Maven
> > team suggest and that I just listed :
> > http://maven.apache.org/development-process.html
> >
> > We don't use an automated build tool yet (I have to integrate it in
> > our process first), but we plan to use Continuum (the last is 1.0.2)
> > very soon. So I can't really help you there but I think you can tell
> > him what projects to construct.
> >
> > [dh] Okay, I too would like to use Continuum but I didn't find many docs to 
> > help with this.

Yeah you can ask on this list because I know some people already use it.
> >
> > Well, I hope it's help. Hard to explain all of those concepts in a
> > small mail. If you need more advice, don't be afraid to ask.
> >
> > [dh] Thanks a lot!
> >
> > -dh
> >
> > On 2/21/06, Dave Hoffer <[EMAIL PROTECTED]> wrote:
> > > 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]
> > >
> > >
> >
> >
> > --
> > 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]
> >
> >
>
>
> --
> Alexandre Poitras
> Québec, Canada
>


--
Alexandre Poitras
Québec, Canada

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

Reply via email to