Hey Matt,
Matt Benson wrote:
I am just getting my feet wet in Ivy and haven't yet
managed to work this out for myself: In e.g. Eclipse
(but I'd like to know about IDEA and other IDEs as
well), what is the generally accepted "right way" of
working with Ivy? Using Ant builds exclusively, for
starters? What about latest-integration builds +
classpaths + code completion, etc.? Hopefully this
gives you an idea of the kinds of issues and pitfalls
I am thinking of, and will allow some of you to
explain how they tend to work (or not) with Ivy in an
IDE.
I use a retrieve to actually retrieve all components
(jars/sources/javadocs) in lib directory and do a:
I'm actually only doing a retrieve only if the dependencies have changed
after a resolve
The pattern I use is: ivy.retrieve.pattern =
${ivy.lib.dir}/[type]s/[organisation].[artifact]-[revision].[ext]
The retrieve serves 2 purposes, mapping any kind of IDEs to it and
visual checking of the resolution.
I'm mapping my ide (IDEA) to that. I'm doing it most of the time
manually even though I could generate the project file.
I don't want my dependencies to change every time, so even though I'm
for some (bad) reasons on a latest.integration, I'm fairly conservative
in my workspace. Having dependencies changing while you're working on
things is never a good idea.
When I will have time I will actually try to go over the build and make
it use the origin, because in a large build system there is just a silly
amount of copying happening to the cache and projects and we're talking
about 200MB of jars flying around.
As a matter of fact it also depends how you want to define your libraries.
For example in IDEA, you could very well define all your third party
libs into the 'library' and use it from their in your projects and
modules (which would mean working by reference rather than duplication)
etc...and where a module defines a latest, it would be mapped within
the IDEA module itself. Probably a good Ivy plugin within IDEA would
make the difference, I have tried one, but found it to be rather
cryptic. Maybe the jetbrains guys will do it one day considering they
are apparently integrating it with Team City. :)
-- stephane