Ivy Settings for Ant

24 May 2014

Apache Ivy can be found here. Place the Ivy jar file (e.g. ivy-2.4.0-rc1.jar) in the lib directory where ant is installed.

The ivysettings.xml and ivy.xml files need to be in the same location as the related ant build.xml file.

Example contents:

ivysettings.xml:

XML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<ivysettings>
    <settings defaultResolver="simple" />
    <resolvers>
        <chain name="simple">
            <ibiblio name="ibiblio"  m2compatible="true" />
        </chain>
    </resolvers>
    <modules>
    </modules>
</ivysettings>

ivy.xml (partial, just as an example):

XML
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<ivy-module version="2.0">

    <info organisation="org.mymodule" module="mymodule"/>

    <dependencies>

        <dependency org="commons-dbutils" name="commons-dbutils" rev="1.7" />
        <dependency org="commons-codec" name="commons-codec" rev="1.11" />

        <dependency org="org.glassfish.jersey.containers" name="jersey-container-servlet" rev="2.22.4" >
            <!-- Part of Tomcat already: -->
            <exclude org="javax.servlet" name="javax.servlet-api" />
        </dependency>

        <!-- Java Spark with Thymeleaf template engine. Note that the spark-core JAR has
             to live in the webapp's WEB-INF/lib directory, not the Catalina base lib.   -->
        <dependency org="com.sparkjava" name="spark-core" rev="2.7.2" >
            <exclude org="org.eclipse.jetty" />
            <exclude org="org.eclipse.jetty.websocket" />
            <!-- Part of Tomcat already: -->
            <exclude org="javax.servlet" name="servlet-api" />
        </dependency>
        <dependency org="com.sparkjava" name="spark-template-thymeleaf" rev="2.7.1" />

        <dependency org="mysql" name="mysql-connector-java" rev="8.0.11" />

        <dependency org="org.slf4j" name="slf4j-simple" rev="1.7.25" />

        <!-- Exclude all javadocs and sources: -->
        <exclude org="*" ext="*" type="source"  />
        <exclude org="*" ext="*" type="javadoc" />

    </dependencies>

</ivy-module>

build.xml needs to include the Ivy namespace:

XML
1
2
<project name="${projectName}" basedir="./" default="build"
         xmlns:ivy="antlib:org.apache.ivy.ant" >

Here is an example of an ant target to clean the Ivy cache:

XML
1
2
3
4
5
<target name="clean-ivy-cache" description="cleans the ivy cache">
    <!-- Run this target if you want to re-fetch all lib JARs.  -->
    <!-- The cache on Linux is here by default "~/.ivy2/cache/  -->
    <ivy:cleancache />
</target>