Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[ANT] tarfileset dans un for (ant-contrib)

1 réponse
Avatar
David LE BOURGEOIS
Bonjour.

Sous ant, je cherche comment faire un tar au contenu dynamique,
à l'aide de la tâche for (ant-contrib).

La structure des données actuelles se présente ainsi :

rep/A-doc/
rep/B-doc/
rep/C-doc/

Et le contenu du tar attendu est le suivant :

doc/A
doc/B
doc/C

La cible ant est donc comme suit :

<tar destfile="file.tar.bz2" compression="bzip2">
<tarfileset dir="rep/A-doc" prefix="doc/A" />
<tarfileset dir="rep/B-doc" prefix="doc/B" />
<tarfileset dir="rep/C-doc" prefix="doc/C" />
</tar>

Maintenant, la liste des répertoires est connue dans une
variable :

<property name="list" value="A B C" />

L'idée est d'utiliser le for de ant-contrib :

<tar destfile="file.tar.bz2" compression="bzip2">
<for list="${list}" param="e">
<sequential>
<tarfileset dir="rep/@{e}-doc" prefix="doc/@{e}" />
</sequential>
<for>
</tar>

Mais le for n'est pas permis au sein de la tâche tar :

BUILD FAILED
build.xml:176: The <tar> type doesn't support the nested "for" element.

Du coup, j'ai bien pensé préparer ma structure de répertoires
avant de faire le tar, à l'aide de tâches move dans un for.
Mais, les données sources ne doivent pas être déplacées. Et
faire une copie temporaire prend pas mal de temp.


Avez-vous donc une idée sur la manière de procéder pour obtenir
un tar dynamique ?


Merci d'avance.

--
David LE BOURGEOIS
e-mail : david.lebourgeois (at) free.fr
jabber : david.lebourgeois (at) jabber.fr

1 réponse

Avatar
David LE BOURGEOIS
Bonjour.

Sous ant, je cherche comment faire un tar au contenu dynamique,
à l'aide de la tâche for (ant-contrib).

La structure des données actuelles se présente ainsi :

rep/A-doc/
rep/B-doc/
rep/C-doc/

Et le contenu du tar attendu est le suivant :

doc/A
doc/B
doc/C

La cible ant est donc comme suit :

<tar destfile="file.tar.bz2" compression="bzip2">
<tarfileset dir="rep/A-doc" prefix="doc/A" />
<tarfileset dir="rep/B-doc" prefix="doc/B" />
<tarfileset dir="rep/C-doc" prefix="doc/C" />
</tar>

Maintenant, la liste des répertoires est connue dans une
variable :

<property name="list" value="A B C" />

L'idée est d'utiliser le for de ant-contrib :

<tar destfile="file.tar.bz2" compression="bzip2">
<for list="${list}" param="e">
<sequential>
<tarfileset dir="rep/@{e}-doc" prefix="doc/@{e}" />
</sequential>
<for>
</tar>

Mais le for n'est pas permis au sein de la tâche tar :

BUILD FAILED
build.xml:176: The <tar> type doesn't support the nested "for" element.

Du coup, j'ai bien pensé préparer ma structure de répertoires
avant de faire le tar, à l'aide de tâches move dans un for.
Mais, les données sources ne doivent pas être déplacées. Et
faire une copie temporaire prend pas mal de temp.


Avez-vous donc une idée sur la manière de procéder pour obtenir
un tar dynamique ?


Merci d'avance.



J'ai trouvé une solution pour faire l'archive dynamique :
utiliser le format zip, qui permet l'option update="yes".

Un for va donc boucle sur la liste et faire à chaque itération
un update du fichier zip.

D'autres idées ?

--
David LE BOURGEOIS
e-mail : david.lebourgeois (at) free.fr
jabber : david.lebourgeois (at) jabber.fr