ANT et outils de build

ANT

Introduction

Ant est un outil de build qui permet de :

C’est un outil assez ancien qui a été intégré comme projet Apache en l’an 2000.

Il est basé sur des fichiers de configuration écrits en XML (fichier build.xml).

Installation de ant

L’installation se fait en suivant les instructions données sur la page du projet Ant. Il est disponible à l’installation notamment via le gestionnaires de paquets.

Vérification de l’installation

Pour vérifier la version de Ant présente sur votre système, tapez la commande:

$ ant -version
Apache Ant(TM) version 1.10.2 compiled on February 3 2018

Premiers pas avec Ant

Créez un fichier build.xml qui va nous permettre de tester Ant:

<?xml version = "1.0"?>
<project name = "Hello World with Ant" default = "info">
   <target name = "info">
      <echo>Hello World - Ant</echo>
   </target>
</project>

Lancez maintenant la commande ant:

$ ant
Buildfile: /path/to/ant/project/build.xml

info:
     [echo] Hello World - Ant

BUILD SUCCESSFUL
Total time: 0 seconds

Propriétés

Définition d’une propriété

Nous allons maintenant définir une propriété (property).

Modifiez maintenant le fichier build.xml comme suit:

<?xml version = "1.0"?>
<project name = "Hello World with Ant" default = "info">
   <property name = "site.name" value = "www.example.com"/>
   <target name = "info">
      <echo>Hello World - Ant site is ${site.name}</echo>
   </target>
</project>

L’appel de la commande ant donne:

...
info:
     [echo] Hello World - Ant site is www.example.com
...

Nous venons de définir une propriété nommée site.name.

Propriétés pré-définies

Ajoutez les deux lignes echo dans la cible info comme suit :

<target name = "info">
  <echo>Hello World - Ant site is ${site.name}</echo>
  <echo>Ant version is ${ant.version}</echo>
  <echo>Base dir is ${basedir}</echo>
</target>

On obtient au lancement de ant:

info:
     [echo] Hello World - Ant site is www.example.com /tmp/path/to/ant/project
     [echo] Ant version is Apache Ant(TM) version 1.10.2 compiled on February 3 2018
     [echo] Base dir is /tmp/path/to/ant/project

Nous venons d’utiliser des propriétés pré-définies. En voici une liste :

Nom Définition
ant.file  Le chemin complet vers le fichier de build
ant.version La version de Ant
basedir Répertoire de base du build. Peut être spécifié avec l’attribut basedir de l’élément project
ant.java.version Version de Java utilisée
ant.project.name Le nom du projet (attribute name de l’élément projet)
ant.project.default-target Cible par défaut du projet actuel
ant.project.invoked-targets Cible invoquées (liste séparée par des virgules) du projet
ant.core.lib Chemin vers la librairie Ant (fichier JAR)
ant.home Répertoire d’installation de Ant (ANT_HOME)
ant.library.dir    Répertoire des librairies Ant. En général: ANT_HOME/lib
file.separator   le séparateur des noms de répertoire

Vous pouvez tester ces propriétés avec le fichier suivant:

<?xml version = "1.0"?>
<project name = "Hello World with Ant" default = "info">
   <property name = "site.name" value = "www.example.com"/>
   <target name = "info">
        <echo>Hello World - Ant site is ${site.name} ${basedir}</echo>
        <echo>Ant version is ${ant.version}</echo>
        <echo>Base dir is ${basedir}</echo>
        <echo>Java version is ${ant.java.version}</echo>
        <echo>ant.project.name is ${ant.project.name}</echo>
        <echo>ant.project.default-target : ${ant.project.default-target}</echo>
        <echo>ant.project.invoked-targets : ${ant.project.invoked-targets}</echo>
        <echo>ant.core.lib : ${ant.core.lib}</echo>
        <echo>ant.home : ${ant.home}</echo>
        <echo>ant.library.dir : ${ant.library.dir}</echo>
        <echo>file.separator : ${file.separator}</echo>
   </target>
</project>

Fichier de propriétés

Il est possible de définir les propriétés d’un projet (son nom, sa version, etc) directement dans le fichier build.xml.

Cependant, une pratique courante consiste à placer un fichier nommé build.properties à côté du fichier build.xml

Créez le fichier build.properties et y placer les éléments suivants:

site.name = www.example.com
build.version = 1.2.3

Modifiez le fichier build.xml comme suit:

<?xml version = "1.0"?>
<project name = "Hello World with Ant" default = "info">
   <property file = "build.properties"/>
   <target name = "info">
        <echo>Hello World - Ant site is ${site.name}</echo>
        <echo>Project version is ${build.version}</echo>
   </target>
</project>

L’exécution de Ant donne alors:

iinfo:
     [echo] Hello World - Ant site is www.example.com
     [echo] Project version is 1.2.3

BUILD SUCCESSFUL
Total time: 0 seconds