OVH Cloud OVH Cloud

Détourner Ant ?

3 réponses
Avatar
Zouplaz
Bonjour, j'ai actuellement plusieurs script Bash qui effectuent des
backups et des transferts. Franchement, j'en suis pas très satisfait.
Certe ça fonctionne mais c'est casse pied à maintenir ou étendre
(syntaxe affreuse, gestion des erreurs primitive, bref pour moi c'est
l'horreur intégrale même si ça rend bien service).

Au début j'ai simplement pensé à concevoir une appli en ligne de
commande qui intègrerait son propre scheduler (Quartz, qui est SUPER) et
réaliserait les traitements à partir de tâches définies dans des
fichiers xml externes. Jusque là l'idée me séduit, SAUF que sur certains
points je vais devoir réinventer la roue : désigner un ou plusieurs
répertoire contenant les fichiers à traiter tout en formulant des règles
d'include/exclude.

L'idée m'est venue de concevoir mon appli sous la forme d'une tâche Ant
et ainsi de bénéficier de ce que Ant sait déjà faire (justement la
définition de répertoires et des règles d'inclusion ou d'exclusion qui
vont avec) - Dans ce cas, le scheduler disparaitrait et c'est cron qui
se chargerait du déclenchement.

Ceci étant, il y a aussi un inconvénient : plonger dans les arcanes de
Ant (complexité sans rapport avec le sujet lui même ? peut-être avoir
quelques surprises en cours de route, des limitations sachant que je ne
suis pas un foudre de guerre sous Ant ?).

Pensez-vous que l'idée est farfelue ? Quelles alternatives seraient
envisageables (utiliser un ensemble de classes qui me permettrait
d'arriver au même résultat dans le cadre d'une appli totalement autonome) ?

En conclusion, je cherche une solution pour ne pas avoir à refaire une
procédue de désignation de fichiers ou répertoires, d'inclusion ou
d'exlucion de leur contenu. Ca me semble la problématique de base mais
je me trompe peut-être ?

Votre avis est le bienvenu ! Merci

3 réponses

Avatar
Fabien Bergeret
Zouplaz wrote:
Bla

L'idée m'est venue de concevoir mon appli sous la forme d'une tâche Ant
et ainsi de bénéficier de ce que Ant sait déjà faire (justement la
définition de répertoires et des règles d'inclusion ou d'exclusion qui
vont avec) - Dans ce cas, le scheduler disparaitrait et c'est cron qui
se chargerait du déclenchement.

Ceci étant, il y a aussi un inconvénient : plonger dans les arcanes de
Ant (complexité sans rapport avec le sujet lui même ? peut-être avoir
quelques surprises en cours de route, des limitations sachant que je ne
suis pas un foudre de guerre sous Ant ?).

Pensez-vous que l'idée est farfelue ?
Non, ant permet de faire bcp de choses.

Par exemple (utilise dans ma boite) :
verifier la conformite de code par rapport a des regles de style et
produire des rapports HTML
verifier le checksum d'un ensemble de fichier par rapport a une reference

Votre avis est le bienvenu ! Merci
Au cas ou ant ne suffise pas, il existe ant-contrib

(http://ant-contrib.sourceforge.net/) qui definit d'autres taches ant
bien pratiques (telles que <foreach> pour boucler sur un ensemble de
fichiers)

Avatar
Hervé AGNOUX
Zouplaz wrote:


Votre avis est le bienvenu ! Merci


Moi je trouve que, au niveau de la clarté et de l'usage, Ant est nettement
supérieur aux scripts bash.

A titre d'exemple, voici mes tâches ant de sauvegarde de mon compte :

<target name="stamp">
<tstamp><format property="jour" pattern="ddMMyyyy" locale="fr"/></tstamp>
</target>

<target name="sauve-compte" depends="stamp">
<tar destfile="tmp/herve-${jour}.tar" longfile="gnu" defaultexcludes="no">
<tarfileset dir="." defaultexcludes="no">
<include name="clients/**"/>
<include name="société/**"/>
<include name="CVS/**"/>
<include name=".Mail/**"/>
<exclude name="**/*.iso"/>
<exclude name="**/*.exe"/>
<exclude name="**/*.zip"/>
<exclude name="**/*.tif"/>
<exclude name="**/*.ps"/>
<exclude name="**/*.log"/>
<exclude name="**/*.ser"/>
<exclude name="**/TAGS"/>
<exclude name="**/semantic.cache"/>
<exclude name="**/*.class"/>
<exclude name="**/*.html"/>
<exclude name="**/*.jpg"/>
<exclude name="**/*.JPG"/>
<exclude name="**/*.pdf"/>
<exclude name="**/*.tar*"/>
<exclude name="**/*.bin"/>
</tarfileset>
</tar>
</target>

J'avoue que je ne saurais pas le faire avec la commande "tar" en ligne de
commande. Et aussi que cette tâche ne me sauvegarde pas le tar sur un CD.
Mais je ne saurais pas non plus le faire avec bash, alors...

Donc, pour Ant, je vote ++.

Un autre outil alternatif est Maven. Mais il est surtout prévu pour le
développement, et ne possède pas la richesse des tâches Ant. Il est très
bon pour des tâches communes aux développements logiciels (tester,
compiler, jarérizer, déployer...), mais pas comme remplacement à Bash.

Si vous êtes doué en Java, il y a également le BeanShell
(http://www.beanshell.org) avec lequel vous pouvez faire des scripts shell
en Java (quel plaisir ! ). Cela fonctionne très bien, mais, si vous pouvez
encore faire des zip, cela devient plus difficile pour les tars... Dans ce
genre de série, il y a aussi tout ce qui concerne python, ruby, qui peuvent
remplacer bash dans des scripts shells. Mais aucun ne concurence me
semble-t-il Ant quand il s'agit de faire les scripts habituels de la
gestion de compte (des tars, des ftp...)

Cordialement.


--
Hervé AGNOUX
http://www.diaam-informatique.com

Avatar
jerome moliere
On Wed, 23 Nov 2005 14:34:07 +0100, Hervé AGNOUX
wrote:

Zouplaz wrote:


Votre avis est le bienvenu ! Merci


Moi je trouve que, au niveau de la clarté et de l'usage, Ant est
nettement
supérieur aux scripts bash.

A titre d'exemple, voici mes tâches ant de sauvegarde de mon compte :


<snip code>

je vote aussi pour !!!
en ajoutant que ANT supporte le SSH et de la a penser que l'on puisse
singer rsync sans trop de frais ...
cela sera plus clair, portable, tu ne seras pas embete par la complaisance
de tel ou tel shelll (j'ai vu de grosses differences entre les bash d'une
redhat AS et de la debian 3.1 stable)

donc +1

jerome


--
Using Opera's revolutionary e-mail client: http://www.opera.com/m2/
Auteur Eyrolles - consultant indépendant