This is close to what I wanted to be able to do in M2 as well.

One thing to be clear about is what source code a developer may be using 
directly from source control (as opposed to a source distribution of a 
dependency artifact).  We have taken our product and divided it up into many 
smaller (and independent) projects which produce individual artifacts (and we 
haven't looked back).  This means a developer will only get the code out of 
source control for the (relatively few--usually one or two) projects he is 
actually working on.  The other source code would be for dependencies to those 
projects (and provided as source distributions alongside the artifacts for 
those dependencies).

Right now, for the most part, we just make do without the source distribution 
for dependencies.  For the rare instance that we need to debug into a 
dependency (which really doesn't happen much), the developer will usually get 
the code for that project from source control and build it locally (to be sure 
the code matches the jar he's using).  There are times that this can't work, 
though (e.g. when the dependency isn't for the latest version of the artifact).

For a developer working primarily in an IDE, if their project has snapshot 
dependencies, it's up to the developer to make sure he's got the latest 
versions in his local repository.  He can do this by occasionally building the 
project using maven (instead of the IDE).  One problem here is that a normal 
build will download the latest dependencies, but not the source distributions 
for those dependencies.  If all he wants are the latest versions and their 
source distributions, I'm hoping there's a goal in the eclipse/idea plugin that 
can facilitate this.  If not, then I'll write a plugin that does this.  Once 
there's a single plugin that gets them up to date, then the source distribution 
will always be in sync with the version of the dependency in the developer's 
local repository.  It would be even better if the Eclipse plugin for Maven 2 
could automatically check the dependencies and verify that the source 
distribution is up to date (and download it if it isn't).  I don't know if it 
will do that sort of thing or not (I haven't taken the time to research what's 
possible and straightforward when working with the IDEs yet).

..David..


-----Original Message-----
From: Michael Böckling [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, December 20, 2005 2:18 AM
To: Maven Users List
Subject: Re: Maven and Continuous Integration

Hi David,

thank you for your answer.
Sorry for being unclear, but I guess all the issues you brought up are 
important.
I'm really new to the CI concept, and I'm not sure if there is only one way to 
do it, so thats why I'm asking.

I just thought that if developers are expected to write their code in such a 
way that it will work in conjunction with the latest sources of all dependent 
projects, it would also be a necessity to have the latest sources (and 
binaries, maybe) also in their IDE, and not only  in a snapshot repo or 
Continuum or so.

So once there is a new build (nightly or even CI), binary and source references 
in Eclipse (for instance) should point to that newest version, or am I wrong? 
But wouldn't it be a bit unpractical for all developers to update projects in 
their IDE several times a day? I was hoping that we could use some Maven 
automatism.
I know source jars can be released with Maven, but I don't know if these 
sources can be attached to the binary dependencies using the M2 plugin (but I 
know the Eclipse "userlibraries" concept allows that, so maybe a Mojo that 
automatically creates those as a temporary workaround would be feasible).

What I envision is this:
- CI builds upon commits to SVN (released to a special CI snapshot repo), 
whithout any ballast because of performance issues (no site generation etc.).
- Nightly builds with all bells and whistles

When the dev starts working in the morning, all binary and source references of 
dependent projects in his IDE automatically point to the result of the last 
nightly build, which would reside in some snapshot repository. I guess it would 
take two different snapshot repos, one for CI and one for nightly builds, but 
I'm not sure if it is enough for the devs to just use the nightly builds as 
references or also the CI results.

Does that make any sense to you? I'm still uncertain how to adress this whole 
nightly/ci thing properly...
Thank you very much,

    Michael

>David,
>
>What is the scope of each CI build, compile and test, site too, etc?
>
>I have CI only on compile and test for all our product codelines, and 1 
>nightly for site generation as the site gen takes hours to run.
>
>Just wondering if you have an trick to share :-D
>
>
>-----Original Message-----
>From: David Jackman [mailto:[EMAIL PROTECTED]
>Sent: Monday, December 19, 2005 12:40 PM
>To: Maven Users List
>Subject: RE: Maven and Continuous Integration
>
>In our department, we use Maven (v1.0 currently) to do continuous 
>integration builds and a few will use it to do builds on their own 
>machines but most do their own builds using an IDE and use Maven only 
>to update dependencies as necessary.
>
>We don't do separate nightly builds--only continuous builds.
>
>I'm not sure what you mean by "source references in your IDE".  If 
>you're referring to where the IDE gets the source for a particular 
>project, then this comes out of source control like any other project 
>(i.e. Maven isn't affecting the source at all).  If you're referring to 
>where the IDE finds a particular project's binary dependencies, then 
>the IDE refers to these in the user's local repository (we use the IDEA 
>and Eclipse plugins to generate the projects, and they create the 
>references automatically).  If you're referring to where the IDE finds 
>the source code for a particular project's binary dependencies, then we 
>haven't really addressed this problem.  Users can access the source 
>code for other projects within our department from source control.  
>With Maven 2 we were hoping to make source references like this work 
>more automatically (there's ways to make it work better in Maven 1, but 
>we haven't wanted to invest much time into making M1 work better while trying 
>to move to M2).
>
>Hope this helps,
>..David..
> 
>
>-----Original Message-----
>From: Michael Böckling [mailto:[EMAIL PROTECTED]
>Sent: Monday, December 19, 2005 10:54 AM
>To: Maven Users List
>Subject: Maven and Continuous Integration
>
>Hi folks,
>
>this question might be a little OT, but just a little:
>I'd like to know how you handle your continuous integration builds and 
>the source references in your IDE.
>Suppose you got nightly builds as well as CI builds, to which sources 
>would you link the project to you are currently working on? The 
>snapshot build from last night? The latest result of the CI build? Not 
>use Maven
>(repository) at all for that because you check integration whithin your 
>IDE, using checked-out sources of the dependen projects?
>I'm really curious to know how others solved that...
>
>Good night,
>Michael
>
>--
>Giniality AG - Michael Böckling; Steinenberg 21, CH-4051 Basel
>P: +41 61 226 99 63 - F: +41 61 226 99 69 
>[EMAIL PROTECTED]; http://www.giniality.com/
>


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