On Mar 15, 2010, at 2:30 PM, Steve Taranto wrote:

Can someone offer a simple example of how to get Ivy to publish dependencies to /WEB-INF/lib? I've followed the very simple example in the FAQ and it
doesn't work.

Here's what I'm doing....

(1) I create a WTP Web project.

(2) My {project_root}/ivy.xml contains...

<dependencies>
  <dependency org="commons-lang" name="commons-lang" rev="2.0" />
</dependencies>

(3) I go to Java Build Path / Libraries / Add Library... and add
"ivy.xml[*]".  The Publish/export dependency is "/WEB-INF/lib".

(4) I go to Java EE Module Dependencies and, as expected, "ivy.xml [*]".

Here's where I fall down... At this point I expect to see the jar's in my
/WebContent/WEB-INF/lib/ directory.  I don't - it's empty.

So, I then run a <ivy:retrieve /> task and the three commons-lang jar's show
up in the {project_root}/lib directory - not /WebContent/WEB-INF/lib.

Of course, when I export to .war they jar's aren't there since they are in
the wrong directory.

What am I missing?


You're missing the fact that you can have the libraries in your classpath, and deployed with your project, without them showing up in WEB-INF/lib. Also, I typically find that to have all my dependencies expressed in Ivy and thus have a completely externalized build, I have to compartmentalize my dependencies such that I compile against one set, but only deploy the other set with my app. In practice, this means I have a default conf which I intend to deploy, plus a compile-only conf that I include in a separate Ivy library. My ivy.xml further defines a compile conf that extends default and compile-only, and it is this conf against which my external build compiles.

HTH,
Matt

BTW,  this is plain old Eclipse 3.5 w/IvyDE 2.1.0 final.

Reply via email to