Fixing the dynamic versions

So, I’ve implemented a build system with Ant+Ivy for a quite big portal project including thousands of files.

In the development process, many of our in-house dependencies are defined as “latest.integration” or “latest.milestone” during the development in the version control system’s HEAD/trunk/mainline/whatever (I’ll refer to trunk from now on).

Before the portal project is released, we create a release branch for the preparation of the release and later on for the bug fixes and maintenance before the next version is released.

When branching, my scripts automatically fix the static versions of the latest.* dependencies on the branch dependencies.

For instance, if the ivy.xml in the trunk had this line:

<dependency org="myorg" name="myproject" rev="latest.milestone"/>

Then the revision in the branch would become something like this:

<dependency org="myorg" name="myproject" rev="12"/>

I did this by doing Ivy deliver and committing the resulting XML to the version control system.

I also had a recursive publish system going on, but that’s perhaps another topic.

So, the question is, how can you do something like this in Gradle? Since the versions can come from wherever (variables, or what have you), it’s hard to automate things like this.

Similarly, how can you do the automatic increase of versions as in Maven Versions Plugin?

There is an issue about this: Gradle should provide an option to perform an Ivy deliver when producing the uploaded Ivy file for a module