Hi Leonard,
Comment inlined.
Hope this will help.
Raphaël
Leonard Gestrin a écrit :
Hello,
This is my first post to the list and I am very new to mvn/continuum
world.
We are currently using mvn snapshot features but I think we are not
using it properly. I want to move building of snapshots to build
integration machine where continuum runs and I have few questions about
how Continuum would go about building snapshots.
Lets say, I have
artifacts: webapp, webutil, util, common. - all these components are in
active development.
webapp depends on webutil, util, common
and on parent
webutil depends on util, common
and on parent
util depends on common.
and on parent
common depends on parent
The goal is to make sure that snapshots are updated properly recursively
when change happens to a certain snapshot. And all pieces of the
application are using same versions of snapshots.
1. To make sure every artifact depends on same version of
dependencies, parent pom.xml will have
dependencyManagement>
<dependencies>
<dependency>
<!-3rd party ->
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.0.4</version>
</dependency>
<!-internal->
<groupId>company.com</groupId>
<artifactId>webutil</artifactId>
<version>1.0.0-SNAPSHOT</version>
<groupId>company.com</groupId>
<artifactId>util</artifactId>
<version>1.0.0-SNAPSHOT</version>
<groupId>company.com</groupId>
<artifactId>common</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependencyManagement>
I don't know if this works for your case
2. to make sure that snapshots are build using controlled
environment, lets say continuum is used to build them. So, my questions
are:
Will continuum rebuild ALL snapshots every time it makes a build?
(hourly, per say).
If i remember correctly, a project is rebuild only if the SCM has changed
a) If "yes", how does it know the order in which snapshots have to be
generated? (common first, util, webutil, webapp) - the order is very
important since if there is a change in common, util has to be compiled
against latest common classes.
in the an order guessed by resolving the dependency graph
Also, it seems to me that repository will get filled up very quickly
with identical snapshots for same component and each developer's machine
would have to sync new snapshots every time it checks with repository
this achieved by setting a repository policy (can't where and how)
b)If continuum is smart enough to create new snapshot only when
there has been code changes in src of particular module, does it know
that snapshots depending on that module have to be regenerated also?
Can't say, but would be interested in the answer
3. if continuum does not have the answer for the problem/questions to 2.
can someone recommend the alternative solution/intergration server that
would ensure that snapshots are being incrementally deployed only when
and in the right dependency order? (if change has been done in util
module there is no need to redeploy common snapshot but there is a need
to redeploy webutil once util snapshot is ready)
You can have a workaround by setting the build phase to 'deploy' without
--non-recursive option in the continuum wrapper project (assuming that
you also have defined a project wrapping around parent, common, util,
... which has all the projects defined as modules)
But this could have the side effect of redeploying common if only util
has changed.
Thanks
Leonard