Premiers pas avec Ant

publicité
Premiers pas avec Apache Ant
Par Guillaume BITAUDEAU
Le 16/10/2003
Plan de la présentation
 Qu’est-ce que c’est ?
 Pourquoi refaire un Make ?
 Installation
 Notions de bases et fonctionnement
 Exemple
 Créer sa propre tache
 Utilisation dans Eclipse
 Avantages/défauts
 Bibliographie
Qu’est-ce que c’est ?
« Another Neat Tool » …
Un outil ressemblant à Make
Entièrement en java
Réalisé par James Duncan Davidson pour
compiler Tomcat
Licence « Apache Software license »
Pourquoi refaire un Make ?
Multi plateforme
Pour les règles utilisées
Pour son fonctionnement
Fichiers XML
Extensible en Java
Peut quand même exécuter une ligne de
commandes !!!
Installation
Télécharger la dernière version à partir du
site : http://ant.apache.org/
Décompresser l’archive
Mettre à jour les variables
d’environnement :
ANT_HOME=c:\ant
JAVA_HOME=c:\jdk1.2.2
PATH=%PATH%;%ANT_HOME%\bin
Notions de bases et fonctionnement :
les trois types principaux
Un fichier par projet : build.xml
Un « projet » par fichier
 <project name="MyProject" default= "monTarget" basedir=".">
Plusieurs « target » par « projet »
 <target name="compile" depends="init"
description="compile the source "
if/unless="maPropIsSet"/ >
Chaque target n’est exécuté qu’une seule fois
Plusieurs « task » par « target »
 <taskname id="taskID" attribute1="value1" …/>
Notions de base et fonctionnement :
les tasks indispensables (suite)
 Les « property » :
5 méthodes pour les initialiser (valeur, réf,
properties/ressource java, environnement)
 <property name="maProp" value="dist"/>
 <property file="foo.properties"/>
 <property environment="env"/>
Non modifiables
Utilisation :
 <property file="${maProp}/laSuite"/>
 <echo message="Number of Processors =
${env.NUMBER_OF_PROCESSORS}"/>
Notions de base et fonctionnement :
les tasks indispensables (suite)
Les « PatternSet »
Utilisation de *,?,**,/
 <patternset id="sources">
<include name="std/**/*.java"/>
<exclude name="**/*Test*"/>
<includesfile name="${some-other-file}"
if="some-other-file"/>
<excludesfile name="some-file"/>
</patternset>
Attention aux exclusions par défaut
Notions de base et fonctionnement :
les tasks indispensables (suite)
Les « Selectors »
 <classpath>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<dirset dir="${build.dir}">
<include name="apps/**/classes"/>
<exclude name="apps/**/*Test*"/>
</dirset>
<filelist dir="leDir" files="foo.xml,bar.xml">
</classpath>
Notions de base et fonctionnement :
les tasks indispensables (suite)
Les « token filtrers »
 <filter token="year" value="2000"/>
<copy todir="${dest.dir}" filtering="true">
<fileset dir="${src.dir}"/>
</copy>
Attention aux fichiers non ASCII !!!
Notions de base et fonctionnement :
les principales catégories de tasks (fin)
 Archive Tasks
 Compile Tasks
 Deployment Tasks
 Documentation Tasks
 Execution Tasks
 File Tasks
 Remote Tasks
 Testing Tasks
…
Exemple
<project name="MyProject" default="dist" basedir=".">
<description> simple example build file </description>
<!-- set global properties for this build -->
<property name="src" location="src"/>
<property name="build" location="build"/>
<property name="dist" location="dist"/>
<target name="init">
<!-- Create the time stamp -->
<tstamp/>
<!-- Create the build directory structure used by compile -->
<mkdir dir="${build}"/>
</target>
Exemple (suite)
<target name="compile" depends="init"
description="compile the source " >
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}"/>
</target>
<target name="dist" depends="compile"
description="generate the distribution" >
<!-- Create the distribution directory -->
<mkdir dir="${dist}/lib"/>
<!-- Put everything in ${build} into the MyProject-${DSTAMP}.jar file -->
<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>
</target>
Exemple (fin)
<target name="clean" description="clean up" >
<!-- Delete the ${build} and ${dist} directory trees -->
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>
Créer sa propre tache :
le .java
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
public class MyVeryOwnTask extends Task {
private String msg;
public void init () {
//nothing to do
}
2
public void execute() throws BuildException {
System.out.println(msg); }
}
1
4
public void setMessage(String msg) {
3
this.msg = msg; }
(les conversions sont faites par Ant)
Créer sa propre tache :
le .xml (fin)
<project name="OwnTaskExample"
default="main" basedir=".">
<taskdef name="mytask"
classname="com.mydomain.MyVeryOwnTask"/>
<target name="main">
<mytask message="Hello World! MyVeryOwnTask works!"/>
</target>
</project>
Le .java peut être complété pour :
Supporter l’intégration dans un GUI
Faire des tâches plus complexes
Utilisation dans Eclipse
 Editeur spécialisé
 Exécution de Ant intégrée à Eclipse
Avantages
 Multi plateforme.
 Documentations
nombreuses sur
Internet.
 Extensible.
 XML facilement
lisible.
 De plus en plus
d’outils comme
Eclipse le supportent
/
Défauts
 Outil encore jeune.
 Compatibilité entre
les différentes
versions.
 Performances?
Bibliographie
Pour Ant :
Le Site officiel de Ant : http://ant.apache.org/
Pour Ant et Eclipse :
Le manuel d’Eclipse
« Développons en java » de Jean Michel
DOUDOUX :
http://perso.wanadoo.fr/jm.doudoux/java/dejae/i
ndexavecframes.htm
Téléchargement