Ok let me explin it with more details.

I have projects A, B and C, giving artifacts a-1.0.jar, b-1.0.war and
c-1.0.war.

B as a dependency on a-1.0.jar
C as a dependency on a-1.0.jar.


We modify A and B only => (A version should become a-1.1-SNAPSHOT.jar)
But the developer commit it and forget to change the version, the local lib
a-1.0.jar is installed over with what should have been a-1.1-SNAPSHOT.jar.

The build of B breaks because a-1.1-SNAPSHOT.jar cannot be found, he
realizes it and change it. Everything seems ok from now on, no harms done.

We make a modification to C later, build of C breaks, we don't understand
why and can spend a long time trying to find out the reason (because the
local lib a-1.0.jar is not the same as on the central repository). We have
to delete it from the local repository to make sure it is downloaded
properly next time.


To make sure this kind of situation does not happen again, I would like to
install the artifacts only when the version is SNAPSHOT. With cruise control
I cannot configure it to build the project only when the version is
SNAPSHOT. I need to find a way to do it within the maven build lifecycle.



On 08/03/07, Jerome Lacoste <[EMAIL PROTECTED]> wrote:

On 3/8/07, Daniel Beland <[EMAIL PROTECTED]> wrote:
> Hi,
>
>
> I am trying to migrate our projects to maven 2.0.5 (have been using
maven 1
> for 2 years now).
>
> I would like to know how I can invoke maven to package the artifact only
> when the version does not contain SNAPSHOT, and install it if it
contains
> SNAPSHOT.
> In maven 1 I was using a goal like this:
>
>     <goal name="jar:cruisecontrol">
>         <j:if test="${not(pom.currentVersion.endsWith('SNAPSHOT'))}">
>             <ant:echo message="Create jar only"/>
>             <attainGoal name="jar"/>
>         </j:if>
>
>         <j:if test="${pom.currentVersion.endsWith('SNAPSHOT')}">
>             <ant:echo message="Install SNAPSHOT jar"/>
>             <attainGoal name="jar:install"/>
>         </j:if>
>     </goal>
>
>
> This is because I do not want cruise control to install an artifact if
it is
> not a SNAPSHOT. (Released version should always be downloaded from our
> central repository).

install will only happen under the local repository of the user
running your cruisecontrol instance. Why is that affecting you ?

> It happened too many times that developers forget to change the version
to
> SNAPSHOT after a release, and we overwrite the local artifact and break
the
> build of other modules.

If that's the root of your problem, use the release plugin and it
should disappear.

J

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


Reply via email to