OVH Cloud OVH Cloud

[ant] nettoyage des fichiers non conentionnels

4 réponses
Avatar
gregg
Bonjour,

J'ai écrit un buildfile pour un projet, et une cible "clean" qui
supprime les fichiers .class qui fonctionne.

Le problème vient de ce que j'aimerais supprimer tous les fichiers
*.java~ qu'Emacs laisse traîner dans mon fichier src
Mais aucun ne disparaît :-(

Voici la cible:

<target name="clean" description="Cleaning up the mess">
<delete failonerror="false">
<fileset dir="${classes-dir}" includes="**/*.class"/>
<fileset dir="${src-dir}" includes="**/*.java~"/>
</delete>
</target>

Les *.class disparaissent bien, mais pas les *.java~
(j'ai essayé avec *~, sans plus de résultats)

Je ne comprends pas pourquoi il prend les uns et pas les autres ?
(j'utilisais make/gmake, jusqu'alors...)

Merci de vos piste,
gregg

4 réponses

Avatar
gregg
gregg wrote:

Merci de vos piste,


*pistes
(pardon)

Avatar
gregg
apparemment, c'est le tilde final qui gênerait ?
Avatar
cfranco
gregg wrote:

Bonjour,

J'ai écrit un buildfile pour un projet, et une cible "clean" qui
supprime les fichiers .class qui fonctionne.

Le problème vient de ce que j'aimerais supprimer tous les fichiers
*.java~ qu'Emacs laisse traîner dans mon fichier src
Mais aucun ne disparaît :-(

Voici la cible:

<target name="clean" description="Cleaning up the mess">
<delete failonerror="false">
<fileset dir="${classes-dir}" includes="**/*.class"/>
<fileset dir="${src-dir}" includes="**/*.java~"/>
</delete>
</target>

Les *.class disparaissent bien, mais pas les *.java~
(j'ai essayé avec *~, sans plus de résultats)

Je ne comprends pas pourquoi il prend les uns et pas les autres ?
(j'utilisais make/gmake, jusqu'alors...)


La réponse est pourtant dans le (court) manuel de Ant :

http://ant.apache.org/manual/dirtasks.html#defaultexcludes

Default Excludes

There are a set of definitions that are excluded by default from all
directory-based tasks. They are:

**/*~
**/#*#
**/.#*
**/%*%
**/._*
**/CVS
**/CVS/**
**/.cvsignore
**/SCCS
**/SCCS/**
**/vssver.scc
**/.svn
**/.svn/**
**/.DS_Store

If you do not want these default excludes applied, you may disable them
with the defaultexcludes="no" attribute.

Autrement dit, remplace ta ligne :
<fileset dir="${src-dir}" includes="**/*.java~"/>

par
<fileset dir="${src-dir}" defaultexcludes="no" includes="**/*.java~"/>


(fais gaffe par contre que quand tu fais ça, tu travailles sans filet,
vérifie bien tes patterns de "includes" avant de lancer ant...)

--
Christophe Franco

Avatar
gregg
Christophe Franco wrote:

La réponse est pourtant dans le (court) manuel de Ant :

http://ant.apache.org/manual/dirtasks.html#defaultexcludes



ah, zut, en effet !
(j'étais parti sur les pattern, et cette section m'avait échappé :-(


<fileset dir="${src-dir}" defaultexcludes="no" includes="**/*.java~"/>


(fais gaffe par contre que quand tu fais ça, tu travailles sans filet,
vérifie bien tes patterns de "includes" avant de lancer ant...)


Oui, mais le "sans filet" m'a inquiété.
En farfouillant un peu plus, j'ai trouvé ça:

<defaultexcludes remove="**/*~"/>

(suppression des tildes)

<defaultexcludes default="true"/>

Apparemment, ça ne fonctionne qu'avec ant >=1.6, mais ça fonctionne
parfaitement.

Merci encore pour la réponse
(je vais lire le manuel dans son *intégralité*, donc, pour qu'aucune
section ne m'échappe désormais)

++
gregg