Le 29 févr. 08 à 20:24, Juha Ranta a écrit :
Hello,
As an introduction, I have an existing build system that I'm trying
to improve by using Ivy. I think Ivy is very cool, so big thanks for
it!
I have a build server with projects checked out from CVS in one
directory like this:
projectA/
projectB/
projectC/
projectD/
....
Each project has in its root directory a build.xml and ivy.xml which
also come from CVS.
Each of these projects can build, tag, etc, itself and finally
publish its artifact to an Ivy repository independently without
directly referencing other projects. Now I'd like to implement a
simple script which polls CVS and builds automatically builds new
artifacts from projects which, well, need to be built. I can quite
easily get a list of these projects with the Ant task buildlist
sorted so that, for example, if A depends on B, B gets built and
published before A. During the buildlist processing, the script goes
through each of the projects to see if there are any changes in CVS
and if there are, the project gets built. This works fine except
that there are also the dynamic "latest.integration" revisions in
the ivy.xmls and the script doesn't know if some if the dynamic
revisions have changed by just polling CVS.
I think that my script would work like I wanted it to if it would
trigger a new build if the project has changed in CVS since the last
build *or* if the dynamic revisions have changed. Therefore I'm now
wondering what's the best way to check whether the dynamic revisions
have changed. My script can get to the "static" ivy.xml of the
previous build. It perhaps would work if the script executed
"resolve", "delivered" a new static ivy.xml and then somehow diffed
the static dependencies of the previous static ivy.xml to the new
static ivy.xml to decide whether a new build should be triggered.
Are the some easy ways to check if the dependencies of the latest
resolved ivy.xml differ from those of a previously resolved ivy.xml?
Or you think my approach is way off and that I should do it some
other way?
I have no answer but a question :)
It seems strange to me of having a dynamic revision that does not
change between two builds. What is the rationale behind it ?
Nicolas