Tâches de gestion de projet avancés
Exemples de mise en oeuvre de tâches – Sommaire
Tâches de gestion de projet avancés
25
Tâches de gestion de projet avancés
Tâche
echo
<echo> permet d’écrire dans un fichier ou d’afficher un message durant l’exécution des traitements
message
the message to echo. Optional
file
the file to write the message to. Optional
append
Append to an existing file (or open a new file / overwrite an existing file) ? Optional - default is false.
level
Control the level at which this message is reported. Optional of
"error", "warning" (-quiet, -q), "info" (no statement), "verbose"
(-verbose, -v), "debug" (-debug, -d) (decreasing order) Optional default is "warning".
encoding
encoding to use, default is "" ; the local system encoding. since Ant
1.7 Optional http://ant.apache.org/manual/CoreTasks/echo.html
26
Tâches de gestion de projet avancés
Tâche
echo
build.echo.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="Test echo avec Ant" default="init" basedir=".">
<!-- =================================================================== -->
<!-- Initialisation -->
<!-- =================================================================== -->
<target name="init">
<echo message="Debut des traitements" />
<echo>
Fin des traitements du projet ${ant.project.name}
</echo>
<echo message="Ceci est un message warning" level="warning" />
<echo message="Ceci est un message debug" level="debug"/>
<echo file="${basedir}/log.txt" append="false" message="Debut Traitement"/>
<echo file="${basedir}/log.txt" append="true" >
Fin Traitement
</echo>
</target>
</project>
27
Tâche
echo
Tâches de gestion de projet avancés
ant -quiet -buildfile build.echo.xml
Buildfile: build.echo.xml
init:
[echo] Debut des traitements
[echo]
[echo] Fin des traitements du projet Test echo avec Ant
[echo]
[echo] Ceci est un message warning
BUILD SUCCESSFUL
Total time: 0 seconds
28
Tâches de gestion de projet avancés
La tâche
tstamp
<tstamp> définit trois propriétés :
DSTAMP
: la date du jour au format AAAMMJJ
TSTAMP
: l’heure actuelle sous la forme HHMM
TODAY
: la date du jour au format long
build.tstamp.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="Test tstamp avec Ant" default="init" basedir=".">
<target name="init">
<tstamp/>
<echo message="Nous sommes le ${TODAY}" />
<echo message="DSTAMP = ${DSTAMP}" />
<echo message="TSTAMP = ${TSTAMP}" />
</target>
</project>
ant -buildfile build.tstamp.xml
Buildfile: build.tstamp.xml
init:
[echo] Nous sommes le November 21 2007
[echo] DSTAMP = 20071121
[echo] TSTAMP = 1120
BUILD SUCCESSFUL
Total time: 0 seconds
29
Tâches de gestion de projet avancés
La tâche
mkdir
<mkdir>
Creates a directory. Also non-existent parent directories are created, when necessary. Does nothing if the directory already exist.
http://ant.apache.org/manual/CoreTasks/mkdir.html
build.mkdir.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="Test mkdir avec Ant" default="init" basedir="."> \pause
<target name="init">
<mkdir dir="${basedir}/build" />
<mkdir dir="${basedir}/src" />
<mkdir dir="${basedir}/dist" />
<mkdir dir="${basedir}/lib" />
</target>
</project>
Avec dir
, le chemin et le nom du répertoire à créer
ant -buildfile build.mkdir.xml
Buildfile: build.mkdir.xml
init:
[mkdir] Created dir: /home/hernandez/teaching/TdD/05_NH_CM_ant/test/build
[mkdir] Created dir: /home/hernandez/teaching/TdD/05_NH_CM_ant/test/src
[mkdir] Created dir: /home/hernandez/teaching/TdD/05_NH_CM_ant/test/dist
[mkdir] Created dir: /home/hernandez/teaching/TdD/05_NH_CM_ant/test/lib
BUILD SUCCESSFUL
Total time: 0 seconds
30
Tâches de gestion de projet avancés
La tâche
delete
<delete> supprime des fichiers ou des répertoires
build.delete.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="Test delete avec Ant" default="init" basedir=".">
<target name="init">
<delete dir="${basedir}/dist" includeEmptyDirs="true"/>
<delete file="${basedir}/log.txt" />
<delete>
<fileset dir="${basedir}/build" includes="**/*.class" />
</delete>
<delete>
<fileset dir="${basedir}/src" includes="**/.svn"/>
</delete>
</target>
</project>
ant -buildfile build.delete.xml
Buildfile: build.delete.xml
init:
[delete] Deleting: /home/hernandez/teaching/TdD/05_NH_CM_ant/test/log.txt
[delete] Deleting directory /home/hernandez/teaching/TdD/05_NH_CM_ant/test/dist
BUILD SUCCESSFUL
Total time: 0 seconds
31
Tâches de gestion de projet avancés
La tâche
copy
<copy> Copies a file or resource collection to a new file or directory. By default, files are only copied if the source file is newer than the destination file, or when the destination file does not exist.
build.copy.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="Test de copy avec ant" default="init" basedir=".">
<!-- Definition des proprietes du projet -->
<property name="sources.dir" value="src"/>
<property name="build.dir" value="bin"/>
<!-- Initialisation des traitements -->
<target name="init" description="Initialisation">
<!-- Copie des fichiers de configuration et parametrage -->
<copy todir="${projet.build.dir}" >
<fileset dir="${projet.sources.dir}" >
<include name="**/*.properties"/>
<include name="**/*.cfg.xml"/>
</fileset>
</copy>
</target>
</project>
D’autres options sont disponibles tofile
, overwrite
32
Tâches de gestion de projet avancés
La tâche
javac
<javac> permet la compilation de fichiers source contenus dans une arborescence de répertoires
srcdir
répertoire racine de l’arborescence du répertoire contenant les sources
destdir
répertoire où les résultats des compilations seront stockés
classpath
classpath pour l’exécution. Il est aussi possible d’utiliser un tag fils <classpath> pour le spécifier
classpathref
utilisation d’un classpath précédemment défini dans le fichier de build
fork
lance la compilation dans une JVM dédiée au lieu de celle ou s’exécute Ant. défaut est false
source
version des sources java 1.4, 1.5, ...
deprecation
avertissements du compilateur concernant l’usage d’éléments deprecated. défaut est off
target
précise la version de la plate-forme Java cible (1.1, 1.2, 1.3,
1.4, ...)
...
nowarn, debug, optimize, failonerror
33
Tâches de gestion de projet avancés
build.javac.xml
<xml version="1.0" encoding="UTF-8"?>
<project name="Test javac task" default="compile" basedir=".">
<!-- Definition des proprietes du projet -->
<property name="sources.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="lib.dir" value="lib"/>
<!-- Definition du classpath du projet -->
<path id="projet.classpath">
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
<pathelement location="${build.dir}" />
</path>
<!-- Compilation des classes du projet -->
<target name="compile" description="Compilation des classes">
<javac srcdir="${sources.dir}" destdir="${build.dir}" debug="on" optimize="off" deprecation="on">
<classpath refid="projet.classpath"/>
</javac>
</target>
</project>
34
La tâche
java
Tâches de gestion de projet avancés
<java> permet de lancer une machine virtuelle pour exécuter une application compilée.
classname
nom pleinement qualifié de la classe à exécuter
jar
nom du fichier de l’application à exécuter
classpath
classpath pour l’exécution.
classpathref
utilisation d’un classpath précédemment défini
fork
lancer l’exécution dans une JVM dédiée au lieu de celle ou l’exécute Ant
output
enregistrer les sorties de la console dans un fichier
35
Tâches de gestion de projet avancés
La tâche
java
build.java.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="Test java task" default="execute" basedir=".">
<!-- Definition des proprietes du projet -->
<property name="sources.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="lib.dir" value="lib"/>
<!-- Definition du classpath du projet -->
<path id="projet.classpath">
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
<pathelement location="${build.dir}" />
</path>
<!-- Execution de HelloWorld -->
<target name="execute" description="Execution de HelloWorld" >
<java classname="HelloWorld" fork="true">
<classpath refid="projet.classpath"/>
</java>
</target>
</project>
36
Tâches de gestion de projet avancés
La tâche
javadoc
<javadoc> génération de la documentation au format javadoc des classes incluses dans une arborescence de répertoires
sourcepath
le répertoire de base qui contient les sources dont la documentation est à générer
destdir
le répertoire qui va contenir les fichiers de documentation générés
build.javadoc.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="Test javadoc avec Ant" default="javadoc" basedir=".">
<!-- ================================================-->
<!-- Génération de la documentation Javadoc -->
<!-- ================================================-->
<target name="javadoc">
<mkdir dir="doc"/>
<javadoc sourcepath="src" destdir="doc" >
<fileset dir="src" defaultexcludes="yes">
<include name="**" />
</fileset>
</javadoc>
</target>
</project>
37
Tâches de gestion de projet avancés
La tâche
jar
<jar> la création d’une archive de type jar
jarfile
nom du fichier .jar à créer
basedir
répertoire qui contient les éléments à ajouter dans l’archive
compress
sprécise si le contenu de l’archive doit être compressé ou non. Par défaut est true
manifest
le fichier manifest qui sera utilisé dans l’archive
build.jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="Test jar avec Ant" default="packaging" basedir=".">
<!-- =================================================================== -->
<!-- Génération de l’archive jar -->
<!-- =================================================================== -->
<target name="packaging">
<jar jarfile="test.jar" basedir="src" />
</target>
</project>
La tâche
JUnit
Tâches de gestion de projet avancés
Installation
◮
Récupérer JUnit.jar
http://www.junit.org/
◮ export CLASSPATH=
CLASSPATH
:
APPLI/JUnit/junit-4.4.jar
Description des tâches
<junit>
This task runs tests from the JUnit testing framework
<formater>
print results of tests in different formats ( plain, xml
)
<test>
Defines a single test class
<batchtest>
Define a number of tests based on pattern matching http://ant.apache.org/manual/OptionalTasks/junit.html
39
Tâches de gestion de projet avancés
La tâche
JUnit
build.junit.xml
<junit printsummary="yes" haltonfailure="yes">
<classpath>
<pathelement location="${build.tests}"/>
<pathelement path="${java.class.path}"/>
</classpath>
<formatter type="plain"/>
<test name="my.test.TestCase" haltonfailure="no" outfile="result">
<formatter type="xml"/>
</test>
<batchtest fork="yes" todir="${reports.tests}">
<fileset dir="${src.tests}">
<include name="**/*Test*.java"/>
<exclude name="**/AllTests.java"/>
</fileset>
</batchtest>
</junit>
printsummary
Print one-line statistics for each testcase.
fork
Run the tests in a separate VM.
haltonfailure
Stop the build process if a test fails
timeout
Cancel the individual tests if they don’t finish in the given time
todir
Directory to write the reports to
40
La tâche
svn
Tâches de gestion de projet avancés
Installation
◮
Récupérer svnant.jar, svnClientAdapter.jar et svnjavahl.jar
à partir de l’archive svnant http://subclipse.tigris.org/svnant.html
◮ Les mettre dans le classpath...
Description de la tâche svn
◮ http://subclipse.tigris.org/svnant/svn.html
◮
Exemple de build.xml mettant en oeuvre svnant dans l’archive récupérée ci-dessus
◮
Autres exemples d’utilisation subversion.open.collab.net/articles/
IntegratingSubversionIntoYourAntBuild.html
41
Tâches de gestion de projet avancés
La tâche
svn
Un exemple de
build.properties
# build.properties
svnant.version=1.0.0
lib.dir=lib svnant.jar=${lib.dir}/svnant.jar
svnClientAdapter.jar=${lib.dir}/svnClientAdapter.jar
svnjavahl.jar=${lib.dir}/svnjavahl.jar
svnant.latest.url=http://subclipse.tigris.org/svn/subclipse/trunk/svnant/ svnant.this.url=http://subclipse.tigris.org/svn/subclipse/tags/svnant/${svnant.v
ersion}/ svnant.repository.user=guest svnant.repository.passwd=""
build.xml (part 1/2)
<!-all properties are in build.properties -->
<property file="build.properties" />
<!-- path to the svnant libraries. Usually in ANT_HOME/lib -->
<path id="project.classpath">
<pathelement location="${svnjavahl.jar}" />
<pathelement location="${svnant.jar}" />
<pathelement location="${svnClientAdapter.jar}" />
</path>
...
42
Tâches de gestion de projet avancés
La tâche
svn
build.xml (part 2/2)
...
<!-- load the svn task -->
<taskdef resource="svntask.properties" classpathref="project.classpath"/>
<target name="clean">
<delete dir="src_latest"/>
<delete dir="src_${svnant.version}"/>
</target>
<target name="checkoutLatest">
<svn username="${svnant.repository.user}" password="${svnant.repository.pass
wd}">
<checkout url="${svnant.latest.url}" revision="HEAD" destPath="src_latest"
/>
</svn>
</target>
<target name="checkoutThis">
<svn username="${svnant.repository.user}" password="${svnant.repository.pass
wd}">
<checkout url="${svnant.this.url}" revision="HEAD" destPath="src_${svnant.
version}" />
</svn>
</target>
43

Link pubblico aggiornato
Il link pubblico alla tua chat è stato aggiornato.