Search code examples
ivy

Excluding cross-dependencies jar fetching using IVY


My project has specific requirement of xerces jar to use only "2.9.1-patch-01" but other IVY entry fetches latest version of xerces 2.11 due to cross-dependencies so execution fails.

IVY.xml:

<dependency org="xerces" name="xercesImpl" rev="2.9.1-patch-01"/>
<dependency org="org.seleniumhq.selenium" name="selenium-java" rev="3.5.1"/>
<dependency org="org.seleniumhq.selenium" name="selenium-server" rev="3.5.1"/>

Tried IVY.xml (by using exclude but no luck):

1.

<dependency org="xerces" name="xercesImpl" rev="2.9.1-patch-01"/>
<dependency org="org.seleniumhq.selenium" name="selenium-java" rev="3.5.1"> <exclude org="xerces" module="xerces"/> </dependency>
<dependency org="org.seleniumhq.selenium" name="selenium-server" rev="3.5.1"> <exclude org="xerces" module="xerces"/> </dependency>

2.

<dependency org="xerces" name="xercesImpl" rev="2.9.1-patch-01"/>
<dependency org="org.seleniumhq.selenium" name="selenium-java" rev="3.5.1"> <exclude org="xerces" name="xercesImpl"/> </dependency>
<dependency org="org.seleniumhq.selenium" name="selenium-server" rev="3.5.1"> <exclude org="xerces" name="xercesImpl"/> </dependency>

3.

<dependency org="xerces" name="xercesImpl" rev="2.9.1-patch-01"/>
<dependency org="org.seleniumhq.selenium" name="selenium-java" rev="3.5.1"> <exclude org="xerces" name="*xerces*"/> </dependency>
<dependency org="org.seleniumhq.selenium" name="selenium-server" rev="3.5.1"> <exclude org="xerces" name="*xerces*"/> </dependency>

How can I exclude fetching xerces 2.11 in IVY? How can I block fetching 2.11 and always use 2.9.1-patch-01 revision?


Solution

  • Setting force to true does the trick, so all you need to do is set the first line to

    <dependency org="xerces" name="xercesImpl" rev="2.9.1-patch-01" force="true"/>
    

    and you can delete all the excludes.