| <!-- |
| 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 |
| |
| https://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. |
| --> |
| <project name="go-ivy" default="go" xmlns:ivy="antlib:org.apache.ivy.ant"> |
| <!-- |
| this build file is a self contained project: it doesn't require anything else |
| that Ant 1.8 or greater and Java 5 or greater properly installed. |
| |
| It is used to showcase how easy and straightforward it can be to use Ivy. |
| |
| This is not an example of the best practice to use in a project, especially |
| for the Java source code "generation" :-) (see generate-src target) |
| |
| To run copy this file in an empty directory, open a shell (or command line) window |
| in this directory and run "ant". It will download Ivy and then use it to resolve |
| the dependency of the class which is itself "contained" in this build script. |
| |
| After a successful build run "ant" again and you will see the build will be |
| much faster. |
| |
| More information can be found at http://ant.apache.org/ivy/ |
| --> |
| |
| <!-- here is the version of Ivy we will use. change this property to try a newer |
| version if you want --> |
| <property name="ivy.install.version" value="2.4.0"/> |
| <property name="ivy.jar.dir" value="${basedir}/ivy"/> |
| <property name="ivy.jar.file" value="${ivy.jar.dir}/ivy.jar"/> |
| |
| <property name="build.dir" value="build"/> |
| <property name="src.dir" value="src"/> |
| |
| |
| <target name="download-ivy" unless="skip.download"> |
| <mkdir dir="${ivy.jar.dir}"/> |
| <!-- download Ivy from web site so that it can be used even without any special installation --> |
| <echo message="installing ivy..."/> |
| <get src="https://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" |
| dest="${ivy.jar.file}" usetimestamp="true"/> |
| </target> |
| |
| <!-- ================================= |
| target: install-ivy |
| this target is not necessary if you put ivy.jar in your Ant lib directory |
| if you already have Ivy in your Ant lib, you can simply remove this |
| target and the dependency the 'go' target has on it |
| ================================= --> |
| <target name="install-ivy" depends="download-ivy" description="--> install ivy"> |
| <!-- try to load Ivy here from local Ivy dir, in case the user has not already dropped |
| it into Ant's lib dir (note that the latter copy will always take precedence). |
| We will not fail as long as local lib dir exists (it may be empty) and |
| Ivy is in at least one of Ant's lib dir or the local lib dir. --> |
| <path id="ivy.lib.path"> |
| <fileset dir="${ivy.jar.dir}" includes="*.jar"/> |
| </path> |
| <taskdef resource="org/apache/ivy/ant/antlib.xml" |
| uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/> |
| </target> |
| |
| <!-- ================================= |
| target: go |
| Go Ivy, go! |
| ================================= --> |
| <target name="go" depends="install-ivy, generate-src" |
| description="--> resolve dependencies, compile and run the project"> |
| <echo message="using ivy to resolve commons-lang 2.1..."/> |
| <!-- here comes the magic line: asks Ivy to resolve a dependency on |
| commons-lang 2.1 and to build an Ant path with it from its cache --> |
| <ivy:cachepath organisation="commons-lang" module="commons-lang" revision="2.1" |
| pathid="lib.path.id" inline="true"/> |
| |
| <echo message="compiling..."/> |
| <mkdir dir="${build.dir}"/> |
| <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="lib.path.id"/> |
| |
| <echo> |
| We are now ready to execute our simple program with its dependency on commons-lang. |
| Let's go! |
| </echo> |
| <java classname="example.Hello"> |
| <classpath> |
| <path refid="lib.path.id"/> |
| <path location="${build.dir}"/> |
| </classpath> |
| </java> |
| </target> |
| |
| <!-- ================================= |
| target: generate-src |
| 'Generates' the class source. It actually just echo a simple Java |
| source code to a file. In real life this file would already be |
| present on your file system, and this target wouldn't be necessary. |
| ================================= --> |
| <target name="generate-src"> |
| <mkdir dir="${src.dir}/example"/> |
| <echo file="${src.dir}/example/Hello.java"> |
| package example; |
| |
| import org.apache.commons.lang.WordUtils; |
| |
| public class Hello { |
| public static void main(String[] args) { |
| String message = "hello ivy !"; |
| System.out.println("standard message : " + message); |
| System.out.println("capitalized by " + WordUtils.class.getName() |
| + " : " + WordUtils.capitalizeFully(message)); |
| } |
| } |
| </echo> |
| </target> |
| |
| <!-- ================================= |
| target: clean |
| ================================= --> |
| <target name="clean" description="--> clean the project"> |
| <delete includeemptydirs="true" quiet="true"> |
| <fileset dir="${src.dir}"/> |
| <fileset dir="${build.dir}"/> |
| </delete> |
| </target> |
| |
| <!-- ================================= |
| target: clean-ivy |
| ================================= --> |
| <target name="clean-ivy" description="--> clean the Ivy installation"> |
| <delete dir="${ivy.jar.dir}"/> |
| </target> |
| |
| <!-- ================================= |
| target: clean-cache |
| ================================= --> |
| <target name="clean-cache" depends="install-ivy" |
| description="--> clean the Ivy cache"> |
| <ivy:cleancache/> |
| </target> |
| </project> |