Hi,
we hava a non-trivial (but required) project setup that has mixed
dependencies, either sources checked out from th SCM repository or
binaries downloaded from a Maven repository. The most important thing
is that we have to handle archives, e.g. resources or C headers that
are contained in a tar archive for binary distribution, and must be
unpacked when building.
What we need to achieve is the following:
1. Each source dependency should be checked out into its own directory,
resulting e.g. in the following directory structure:
Workspace/Project1, Workspace/Project2, …
2. The binary dependencies can be stored anywhere, e.g. in the ivy cache
3. If a project is missing, it should be checkout out from the SCM
repository, if the user has access to it. This step is optional, but we
would like to automate it
4. If Project1 has a dependency on an archive from Project2, a symlink
should be created, e.g. "lib/Project2/archive" in Project1. The target
of this symlink must be the directory in Project2 that contains the
unpacked build results for the archive. For example, Project2 hast a
target directory "Project2/build/Headers", so link
"Project1/lib/Project2/Headers" should point to
"Project2/build/Headers". I tried this using a file system resolve, but
could not get it to work without publishing "Project2" to the Ivy
cache. However, we absolutely need the direct link into Project2's
source.
5. If Project2 cannot be obtained from the SCM repository, it should be
downloaded from a Maven repository and unpacked someplace. The link
"Project1/lib/Project2/Headers" should point to the location where the
artifact was unpacked.
Ivy brings along a lot of the things we need, especially the
configuration management.
It would be great if we could use it, so the question is: Is the setup
described above possible using Ivy, and if yes, how?
Thanks very much for your help,
Jochen