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 > > [dh] Can you configure your application to look for newer versioned > components as well as Snapshots? > > [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. > > > 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? > > [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. > > [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. > > > 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. > > 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 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]