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="${chemin}" executable="cmd.exe">
      <arg line="/c latex ${fichier}.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{
        // représente la liste des noms de fichiers
        private static List liste = new ArrayList();
        // 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(String nom){
            this.nom_repertoire = nom;
        }
     
        // Méthode permettant d'analyser un repertoire pour recuperer les 
        // noms des fichiers
        public static void listeRepertoire ( File repertoire ) {
            if ( repertoire.isDirectory ( ) ) {
                File[] list = repertoire.listFiles();
                for ( int i = 0; i < list.length; i++) {
                    // Appel récursif sur les sous-répertoires
                    listeRepertoire( list[i]);                       
                } 
            }
            else liste.add(repertoire.getAbsolutePath());
        }
     
        // Méthode appelée par Ant
        public void execute(){
     
            File fic = new File(nom_repertoire);
            listeRepertoire(fic);
     
            // envoie de la taille de la liste dans ANT (sous forme de propriete)
            this.getProject().setUserProperty("nb_fichier",""+liste.size());
            // envoie de la liste des nom de fichiers
            this.getProject().addReference("liste",liste);
        }
     
    }

    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:\\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 = ${nom_fichier}"/>
    		<exec dir="${chemin}" executable="cmd.exe">
    			<arg line="/c latex ${nom_fichier}.tex"/>
    		</exec>
    	</target>
     
    	<!-- cible permettant d'appeler la tache perso crée -->
    	<target name="recupere">
    		<recupere_liste nom_repertoire="${nom_rep}"/>
    	</target>
     
    	<!-- cible permettant d'effectuer une boucle -->
    	<target name="boucle" depends="recupere">
    		<script language="javascript"> 
    			<![CDATA[
    				importClass(java.util.List);
    				importClass(java.lang.System);
     
    				liste = essai.getReference("liste");			
     
    				for(i=0;i<liste.size();i++){
    					essai.setProperty("nom_fichier",liste.get(i));
    					tache = essai.createTask("antcall");
    					tache.setTarget("test");
    					tache.execute();
    				}
     
    		    ]]> 
    		</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