Tom wrote on 04/24/2009 03:54 AM:

OK, many projects have source and jar artifacts with the same name,
so you really want to either set a retrieve pattern which includes
the type of the artifact for disambiguation. If you cannot do this,
you'll need to specify an exclusion rule for your dependencies to
only include type jar. Here are examples of both:

I cannot quite wrap my head around this (I've used your configurations).
Now, using:

I'm not quite sure what you're asking. Are you wondering why the pattern I supplied is truly necessary, and why your fails?

Using:

<ivy:retrieve conf="runtime" pattern="lib/[artifact]-[revision].[ext]"/>
[...]
[ivy:retrieve] *found org.codehaus.enunciate#enunciate-rt;1.10 in public*
[...]
BUILD FAILED
C:\Documents and Settings\toeu\My
Documents\kp\profiler\kpprofiler2\components\s
ervice\build.xml:44: impossible to ivy retrieve:
java.lang.RuntimeException: pro
blem during retrieve of nl.knowledgeplaza#kpprofiler-service:
java.lang.RuntimeException: *Multiple artifacts of the module
org.codehaus.enunciate#enunciate-rt;1
.10 are retrieved to the same file!* Update the retrieve pattern to fix
this error.

org.codehaus.enunciate#enunciate-rt;1.10 specifies a *module*, which will have multiple artifacts. If you retrieve those based solely upon name-revision.ext, then jars containing different contents, and with different type will collide into the same local jarname when you retrieve.

Try "find ~/.ivy2 -name 'enunciate*.jar'" and see what you get (substitute the name of your cacheDir if you've changed the default). You'll see that the enunciate module has two jars with an artifact name of enunciate-rt (they differ by classifier). That's why a more-specific retrieve pattern is required.

Thanks,
  --kirby

Reply via email to