I’m using a local Ivy repository to manage dependencies. In Eclipse we are using the IvyDE plugin so each project has an ivy.xml file. In ivy you can specify an ‘override’ element when declaring a dependency, for example if you wish to use a different version of a JAR than the one declared in the list of dependencies in Ivy.
Here’s an example ivy.xml file. I can see examples in the documentation on excluding dependencies, but how can I specify the override’s in Gradle? If there is not a Gradle way to do this, would it be easier to import my ivy.xml files and use them?
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.
See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.
The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.
See the License for the
specific language governing permissions and limitations
under the License.
-->
<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
<info organisation="ois" module="uwm" status="integration"/>
<configurations>
<conf name="default" visibility="public" description="...." extends="runtime"/>
<conf name="compile" visibility="public" description="...." />
<conf name="runtime" visibility="public" description="...." extends="compile"/>
</configurations>
<dependencies>
<dependency org="org.mockito" name="mockito-all" rev="1.8.2" />
<!--
c3po is an optional dependancy on hibernate, but getting separately to avoid getting a load
of other JAR's which are optional dependencies which we don't need -->
<dependency org="jboss" name="jboss-archive-browsing" rev="2.0.2.alpha" />
<dependency org="cglib" name="cglib-nodep" rev="2.1_3" />
<!-- Should pull in dependencies on hibernate, hibernate-annotations,
hibernate-commons-annotations & hibernate-validator -->
<dependency org="org.hibernate" name="hibernate-entitymanager" rev="3.3.1.ga" conf="default->compile, master(*)">
<!-- we don't use persistence-api -->
<exclude org="javax.persistence" module="persistence-api"/>
<!-- we don't use jboss-common-core, we are using jboss-archive-browsing instead - the JARs seem similar (with a few differences)
a dependancy on jboss-archive-browsing has been declared separately -->
<exclude org="jboss" module="jboss-common-core"/>
<!-- version conflict - we have a different version of jta.jar (although not sure what version we have
out version appears to have an extra interface (i've decompiled and compared) -->
<exclude org="javax.transaction" module="jta"/>
<!--
Hibernate has a dependancy on cglib, but Spring has a dependancy on cglib-nodep
out project has always used the cglib-nodep version (don't know why) so I'm excluding the
cglib version -->
<exclude org="cglib" module="cglib"/>
</dependency>
<dependency org="junit" name="junit" rev="4.9" conf="default->master"/>
<dependency org="com.healthmarketscience.rmiio" name="rmiio" rev="2.0.2" conf="default->master"/>
<dependency org="log4j" name="log4j" rev="1.2.16" conf="default"/>
<!-- don't get the optional dependencies for acegi-security, version 1.0.6 has
dependencies on an old version of Spring (1.2.9).
The 'master' configuration of
acegi-security should just get the acegi-security jar -->
<dependency org="org.acegisecurity" name="acegi-security" rev="1.0.6" conf="default->master"/>
<dependency org="org.apache.lucene" name="lucene-core" rev="3.4.0" />
<dependency org="c3p0" name="c3p0" rev="0.9.1.2" />
<dependency org="ois" name="serverUtils" rev="1.0" conf="default"/>
<!-- some of the Hibernate dependencies are on older versions of JAR's than we are currently using, so
overriding here - this means any transitive dependencies will be forced to use our overriden versions -->
<override org="jboss" module="javassist" rev="3.4.ga"/>
<override org="net.sf.ehcache" module="ehcache" rev="1.6.0-beta2"/>
<override org="commons-logging" module="commons-logging" rev="1.1.1"/>
<override org="commons-collections" module="commons-collections" rev="3.2"/>
<!-- hibernate-entitymanager has a dependancy on an older verison of hibenernate - overriding to our version -->
<override org="org.hibernate" module="hibernate" rev="3.2.5.ga"/>
</dependencies>
</ivy-module>