IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ANT Java Discussion :

Comment puis-je créer une liste de fichiers contenus dans un projet Eclipse ?


Sujet :

ANT Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    février 2005
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2005
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Comment puis-je créer une liste de fichiers contenus dans un projet Eclipse ?
    Comment puis-je creer une liste de fichier contenu dans un projet eclipse?
    Mon but etant de grace a un fichier build.xml selectionne tous les fichiers Latex (*.tex) puis d'executer la compilation (latex nomFichier.tex).
    Pour l'instant j'utilise une balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <exec dir="$&#123;chemin&#125;" executable="cmd.exe">
      <arg line="/c latex $&#123;fichier&#125;.tex"/>
    </exec>
    pour compiler mais je suis oblige de changer le nom du fichier a chaque fois.

  2. #2
    Membre du Club
    Inscrit en
    novembre 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : novembre 2004
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    Il faut effectuer une boucle dans ANT qui te permettra de lancer ta cible "exec" avec un nom de fichier different à chaque fois.

    Mais avant il faut que tu recupère dans une liste(par exemple) tous les noms des fichiers de ton repertoire à l'aide d'une tache personalisée ANT (écrite en java)

    La tache perso en Java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
     
    import org.apache.tools.ant.Task;
     
    public class TacheEssai extends Task&#123;
        // représente la liste des noms de fichiers
        private static List liste = new ArrayList&#40;&#41;;
        // représente le nom du repertoire ou se trouve les fichiers à traiter
        private String nom_repertoire;
     
        // Méthode permettant d'initialiser le nom du repertoire
        public void setNom_repertoire&#40;String nom&#41;&#123;
            this.nom_repertoire = nom;
        &#125;
     
        // Méthode permettant d'analyser un repertoire pour recuperer les 
        // noms des fichiers
        public static void listeRepertoire &#40; File repertoire &#41; &#123;
            if &#40; repertoire.isDirectory &#40; &#41; &#41; &#123;
                File&#91;&#93; list = repertoire.listFiles&#40;&#41;;
                for &#40; int i = 0; i < list.length; i++&#41; &#123;
                    // Appel récursif sur les sous-répertoires
                    listeRepertoire&#40; list&#91;i&#93;&#41;;                       
                &#125; 
            &#125;
            else liste.add&#40;repertoire.getAbsolutePath&#40;&#41;&#41;;
        &#125;
     
        // Méthode appelée par Ant
        public void execute&#40;&#41;&#123;
     
            File fic = new File&#40;nom_repertoire&#41;;
            listeRepertoire&#40;fic&#41;;
     
            // envoie de la taille de la liste dans ANT &#40;sous forme de propriete&#41;
            this.getProject&#40;&#41;.setUserProperty&#40;"nb_fichier",""+liste.size&#40;&#41;&#41;;
            // envoie de la liste des nom de fichiers
            this.getProject&#40;&#41;.addReference&#40;"liste",liste&#41;;
        &#125;
     
    &#125;

    La fichier XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <project name="essai" default="main" basedir=".">
     
    	<property name="nom_rep" value="v&#58;\\testnreg\\resultat"/>
     
    	<!-- declaration de la tache perso -->
    	<taskdef name="recupere_liste" classname="tache.ant.TacheEssai" classpath="./classes"/>
     
    	<!-- cible permettant d'effectuer le traitement -->
    	<target name="test">
    		<echo message="nom fichier = $&#123;nom_fichier&#125;"/>
    		<exec dir="$&#123;chemin&#125;" executable="cmd.exe">
    			<arg line="/c latex $&#123;nom_fichier&#125;.tex"/>
    		</exec>
    	</target>
     
    	<!-- cible permettant d'appeler la tache perso crée -->
    	<target name="recupere">
    		<recupere_liste nom_repertoire="$&#123;nom_rep&#125;"/>
    	</target>
     
    	<!-- cible permettant d'effectuer une boucle -->
    	<target name="boucle" depends="recupere">
    		<script language="javascript"> 
    			<!&#91;CDATA&#91;
    				importClass&#40;java.util.List&#41;;
    				importClass&#40;java.lang.System&#41;;
     
    				liste = essai.getReference&#40;"liste"&#41;;			
     
    				for&#40;i=0;i<liste.size&#40;&#41;;i++&#41;&#123;
    					essai.setProperty&#40;"nom_fichier",liste.get&#40;i&#41;&#41;;
    					tache = essai.createTask&#40;"antcall"&#41;;
    					tache.setTarget&#40;"test"&#41;;
    					tache.execute&#40;&#41;;
    				&#125;
     
    		    &#93;&#93;> 
    		</script>
    	</target>
     
    	<!-- cible main -->
    	<target name="main" depends="boucle">
    		<echo message="Fin de la session"/>
    	</target>
     
    </project>

  3. #3
    Membre à l'essai
    Inscrit en
    septembre 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : septembre 2004
    Messages : 10
    Points : 11
    Points
    11
    Par défaut
    Il y a plus simple en utilisant la tache for de ant-contrib
    un exemple y est donné qui correspond à ce que tu cherches:
    A more complicated example to to iterate over a set of c++ source files and invoke the <cc> task on them:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     
     
        <for param="file">
          <path>
            <fileset dir="${test.dir}/mains" includes="*.cpp"/>
          </path>
          <sequential>
            <propertyregex override="yes"
              property="program"  input="@{file}"
              regexp=".*/([^\.]*)\.cpp" replace="\1"/>
            <mkdir dir="${obj.dir}/${program}"/>
            <mkdir dir="${build.bin.dir}"/>
            <cc link="executable" objdir="${obj.dir}/${program}"
                outfile="${build.bin.dir}/${program}">
              <compiler refid="compiler.options"/>
              <fileset file="@{file}"/>
              <linker refid="linker-libs"/>
            </cc>
          </sequential>
        </for>
    voir ici pour utiliser ant-contrib dans ant avec plein d'autres facilités!

Discussions similaires

  1. comment créer une liste de fichier
    Par michel799 dans le forum Débuter
    Réponses: 2
    Dernier message: 29/06/2012, 15h25
  2. Comment puis-je créer une base de données oracle
    Par tsdia2 dans le forum Installation
    Réponses: 8
    Dernier message: 13/05/2008, 09h46
  3. Créer une liste de fichiers 'activable'
    Par Naga2 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 28/10/2007, 17h36
  4. comment puis-je créer un BDD en fichier texte
    Par slyder dans le forum Bases de données
    Réponses: 2
    Dernier message: 19/01/2005, 10h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo