I am trying to revise my build process to use ant with apache ivy for my personal projects. These consist of a few shared modules, and a few application modules that depend on the shared modules. For the sake of this post, let's simplify and say I have a shared module (common
), and an application module (application
) which depends on common
. Each module has it's own effective svn repository:
svn_repo_1/common/trunk
/branches
/tags
svn_repo_2/application/trunk
/branches
/tags
I check out the relevant revision into a common workspace, in a flat structure:
workspace/common
workspace/application
In general, application
will depend on a published version of common
, so there will be no need to build common
when building application
.
However, when I need to add new functionality to common
that is required by application
, I would then like application
to depend on the latest common
build from my workspace (without needing to publish common to my repository).
I assumed this is what latest.integration
meant (i.e. changing application
's ivy.xml to specify latest.integration for the common revision). My intention was to use the ivy buildlist
task to find the local modules that needed to be built before application could be built. This does not work however, because the buildlist
task seems to include the common/build.xml entry regardless of whether application's ivy.xml file specifies latest.integration or some other published revision.
I would appreciate any suggestions. I am struggling with ivy's documentation and samples, so any real-world examples would also be helpful. Note: I am not interested in a Maven solution here.