On va commencer à jouer avec Ant en douceur, en écrivant un squelette de descripteur de projet.
cette faq en quelques parties constituera un micro-tutoriel.
Assurez-vous tout d'abord que Ant est correctement installé.
[b]I-bases:[/b]
créez un fichier nommé [b]build.xml[/b] contenant le code suivant:
[code]<?xml version="1.0" encoding="UTF-8"?>
<!-- buildfile made with Ant 1.6.2 -->
<project name="tutorial" default="hello" basedir=".">
<target name="hello">
<echo message="Hello World !!!" />
<!-- autre syntaxe: <echo>Hello World !!!</echo> -->
</target>
</project>[/code]
dans un shell ou une fenêtre de commande MS-DOS (suivant votre os),
positionnez-vous dans le dossier ou se trouve votre build.xml et
tappez [b]ant[/b] et regardez s'afficher le sempiternel helloworld.
la balise <project> est la racine de tout buildfile.
name, attribut facultatif, donne un nom au projet.
default précise la cible par défaut à exécuter.
basedir, attribut facultatif, précise à partir la racine à partir de laquelle résoudre
les chemins relatifs (valeur par défaut: dossier contenant le buildfile)
le contenu d'un buildfile est constitué de tâches et de cibles.
les tâches sont des instructions de base, automatiquement exécutées.
les cibles (balise [b]target[/b]) sont des ensembles de tâches exécutés à la demande,
en tappant:
[quote]ant nom_cible[/quote]
chaque projet contient obligatoirement au moins une cible, la cible par défaut, qui s'éxécute
quand on ne précise pas de cible dans la commande. dans notre exemple, "help" est la cible par
défaut, ce que l'on indique dans l'attribut "default" de la balise project.
Si vous souhaitez donner un autre nom que build.xml à votre buildfile, vous devrez rajouter
l'option [b]-f nom_buildfile[/b] à la commande ant.
la suite concernera les cibles.
__________________________
je panse, donc j'essuie
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
[b]II-portée des cibles:[/b]
on va maintenant voir qu'il est possible de hiérarchiser les cibles.
modifiez votre buildfile pour qu'il contienne le code suivant:
[code]<?xml version="1.0" encoding="UTF-8"?>
<!-- buildfile made with Ant 1.6.2 -->
<project name="tutorial" default="help" basedir=".">
<description>exemple de buildfile</description>
<target name="help">
<echo>
[CDATA[
aide en ligne du buildfile.
la coutume est de produire des fichiers auto-documentés.
voici la liste des tâche proposées par ce fichier:
help la tâche par défaut, qui propose l'aide.
hello pour dire bonjour.
]]
</echo>
<!--
la balise xml CDATA permet de conserver la mise en forme du texte,
et d'afficher les caractères spéciaux sans avoir à utiliser leurs
séquences d'échappement.
-->
</target>
<target name="hello"
description="dit bonjour">
<echo message="Hello World !!!" />
<echo>Hello World !!!</echo>
</target>
<target name="hidden">
<echo message="la cible cachée..." />
</target>
</project>[/code]
on définit 3 niveaux de cibles: défaut, publique et privée.
[quote]la cible par défaut a déjà été abordée.
la cible publique doit être visible par tout utilisateur du buildfile.
la cible privée est une cible interne, ou réservée à un utilisateur précis.[/quote]
ces trois niveaux ne relèvent pas d'un système de permission, mais de la
visibilité des cibles.Vous voyez que la cible "help" commente toutes les cibles,
sauf "hidden".
La cible "hello" est aut-documenté via l'attribut "description", qui en fait une
cible publique.
tappez la commande:
[quote]ant -projecthelp[/quote]
tout d'abord s'affiche le commentaire saisi dans la balise "description".
ensuite la section "Main targets" liste les cibles publiques, ici hello.
puis finalement le cible par défaut est mentionnée.
seul la lecture du source du buildfile permet de connaître l'existence de la cible "hidden".
la prochaine partie traitera des propriétées.
__________________________
je panse, donc j'essuie
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
[b]III-propriétés:[/b]
on va maintenant jouer avec les propriétés. Prenez maintenant le buildfile suivant:
[code]<?xml version="1.0" encoding="UTF-8"?>
<!-- buildfile made with Ant 1.6.2 -->
<project name="tutorial" default="message" basedir=".">
<target name="message">
<echo message="${string}" />
</target>
<target name="env">
<echo message="ANT_HOME vaut: ${env.ANT_HOME}" />
</target>
<target name="file">
<echo message="je suis ${pseudo}" />
<echo message="ce topic concerne ${topic}" />
</target>
</project>[/code]
créez également un fichier [b]ant.properties[/b] dont le contenu est:
[code]pseudo=jadawin
topic=ant[/code]
1ère méthode:
[quote]<property name="string" value="waza" />[/quote]
permet de créer une variable string et de lui donner la valeur waza. Celle ci peut ensuite être appelé suivant la syntaxe xml: ${string}
la cible "message" illustre ce mécanisme.
Il est possible de manipuler les variables d'environnement. la balise property utilise alors l'attribut environnement. le mécanisme d'utilisation des variables d'environnement est indiqué par la cible "env".
pour des raisons de portabilité, les variables peuvent être externalisées dans un fichier de propriétés (ant.properties). elles sont ensuite appelées comme toute autre variable, comme le montre la cible "file". Ce genre de fichier est généralement utilisé pour les variables dépendantes de la station de travail.
Vous pouvez également définir une variable dans la commande d'appel, ou écraser la valeur défini dans le buildfile.
appellez la cible "message" comme suit:
[quote]ant message -Dstring=marcel[/quote]
et vous affichez marcel au lieu de waza.
les propriétées peuvent être décrites n'importe ou dans le buildfile, mais la convention est de les lister avant la première cible.
la suite abordera les dépendances entre cibles
__________________________
je panse, donc j'essuie
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
la cible "2" dépend de la cible "1". à l'exécution de la cible "2", la cible "1" va être éxécutée en premier, et en cas de succès, la cible "2" est exécutée à son tour.
on a donc dans l'ordre l'exécution de "1" puis de "2".
D'après les dépendances listées par "3", on s'attend à l'exécution de "1", "2", "1" puis "3" car les dépendances sont résolues dans l'ordre de leur déclaration. mais dans une chaîne de dépendances, chaque cible n'est exécutée qu'une seule fois. l'appel de "3" exécute donc "1","2", puis "3".
La prochaine fois, on verra un exemple de buildfile basique pour jouer avec les sources d'un projet...
__________________________
je panse, donc j'essuie