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 :

native2ascii et copy: Fichiers ignorés?


Sujet :

ANT Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 4
    Points
    4
    Par défaut native2ascii et copy: Fichiers ignorés?
    Bonjour à tous, voici mon problème.

    J'ai un projet composé de plusieurs répertoires. Parmi ces répertoires, il y a des répertoires 'resource' contenant des fichiers .properties utilisée par Struts pour les labels, etc...

    Avant la construction du jar, il y a compilation des fichiers java, et une copie de tout les fichiers .properties, .bmp, .... Tout ces fichiers sont copiés ou compilés vers un répertoire 'classes' utilisé pour construire le jar.

    J'aimerais ajouté une tâche pour que les fichiers .properties utilisé par Struts soit "traités" pour remplacer les caractères spéciaux (accent, ...) en unicode, pour ne pas perdre de temps à le faire moi-même lorsque j'ajoute les labels et autres.

    J'ai donc ajouté une tâche <native2ascii> juste après le <copy> mais celà ne fonctionne pas.

    Les fichier resource (copié juste avant native2ascii) semblent ne pas être pris en compte par la tâche native2ascii. Je suis obligé des les exclure du copy pour qu'ils soient pris en compte.
    Il doit y avoir un autre moyen. Etant donné qui je suis un newbie avec Ant et que je n'ai pas écrit ce fichier

    Quelqu'un pourrait m'aider à automatiser la tâche de manière propre?

    Voici la partie du fichier ant:
    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
    <target name="compile-java">
            <mkdir dir="${project.build.classes}"/>
            <depend srcdir="${project.source}" destdir="${project.build.classes}" cache="depcache" closure="true">
                <include name="**/*.java"/>
                <exclude name="Web Content/*"/>
            </depend>
            <javac destdir="${project.build.classes}"
                   deprecation="${project.build.deprecation}"
                   optimize="${project.build.optimize}" debug="${project.build.debug}"
                   srcdir="${project.source}"
            	   fork="true"
            	   memoryinitialsize="128m"
            	   memorymaximumsize="256m">
                <include name="**/*.java"/>
                <exclude name="**/Test*.java"/>
                <classpath>
                    <pathelement path="${project.classpath}"/>
                    <pathelement location="${project.build.classes}"/>
                </classpath>
            </javac>
            <copy todir="${project.build.classes}" overwrite="true">
                <fileset dir="${project.source}">
                    <include name="**/*.properties"/>
                	<exclude name="**/resource/**/*.properties"/>
                    <include name="**/*.txt"/>
                    <include name="**/*.ttf"/>
                    <include name="**/*.bmp"/>
                    <include name="**/*.xml"/>
                    <include name="**/*.xsd"/>
                    <include name="**/*.xsl"/>
                    <include name="**/*.xls"/>
                    <include name="**/*.csv"/>
                </fileset>
            </copy>
        	<!-- Change accent into unicode -->
        	<native2ascii dest="${project.build.classes}" src="${project.source}">
    			<include name="**/resource/**/*.properties"/>
        	</native2ascii>
        </target>
    Pour info, le code que j'ai ajouté à ce fichier est celui-ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <exclude name="**/resource/**/*.properties"/>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!-- Change accent into unicode -->
        	<native2ascii dest="${project.build.classes}" src="${project.source}">
    			<include name="**/resource/**/*.properties"/>
        	</native2ascii>

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    a vue de nez, je dirais que native2ascii n'écrase pas les fichiers par défault (se base probablement sur les dates). Comme native2ascii n'a pas d'option pour forcer l'override, tu peux, par exemple, déplacer ta tâche de copy *après* le native2ascii (en faisant gaffe à ce que copy ne soit pas en override lui).

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    a vue de nez, je dirais que native2ascii n'écrase pas les fichiers par défault (se base probablement sur les dates). Comme native2ascii n'a pas d'option pour forcer l'override, tu peux, par exemple, déplacer ta tâche de copy *après* le native2ascii (en faisant gaffe à ce que copy ne soit pas en override lui).
    Oui je pense aussi que c'est la meilleure solution.

    J'ai également un problème similaire, mais dans le copy on applique un filterset.
    Voici le code:
    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
    <target name="build-server" depends="compile-java">
            <tstamp>
                <format property="build.time" pattern="dd/MM/yyyy HH:mm"/>
            </tstamp>
            <copy todir="${project.build}/classes" overwrite="true">
                <fileset dir="${project.source}/resources">
                    <include name="**/*.properties"/>
                	<exclude name="**/ApplicationResources*.properties"/>
                	<exclude name="**/BillingForm*.properties"/>
                	<!-- Add any other resource file here -->
                    <include name="**/*.xml"/>
                    <include name="**/*.txt"/>
                    <include name="**/*.ttf"/>
                    <include name="**/*.bmp"/>
                    <exclude name="Web Content/**"/>
                </fileset>
                <filterset>
                    <filter token="BUILD-DATE" value="${build.time}"/>
                </filterset>
            </copy>
        	<!-- Change accent into unicode -->
        	<native2ascii dest="${project.build}/classes" src="${project.source}/resources">
        		<include name="**/ApplicationResources*.properties"/>
        		<include name="**/BillingForm*.properties"/>
        		<!-- Add any other resource file here -->
        	</native2ascii>
            <!-- Create a jar file for the batch applications -->
            <jar destfile="${project.deploy}/${project.webapp.name}.jar"
                 basedir="${project.build}/classes"
                 includes="**/*.class,**/*.properties,**/*.txt,**/*.ttf,**/*.bmp"/>
            <checksum file="${project.deploy}/${project.webapp.name}.jar" forceoverwrite="yes" fileext=".md5"/>
        </target>
    Etant donné que <native2ascii> agit comme un <fileset>, il ne m'est pas possible de mettre un <filterset>. Quelle solution s'offre à moi pour que le token soit remplacé?

    Je pourrais aussi éxécuter le <native2ascii> avant le copy et enlever l'overwrite, mais dans ce cas, les properties traité par native2ascii ne seront pas pris pour le token. Et évidemment, le token est dans ces fichiers

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    j'ai trouvé une petite astuce pour contourner le problème.

    1. Je créé un répertoire temporaire
    2. Je lance le native2ascii sur mes fichier properties vers le répertoire temporaire
    3. je copie les autres resource vers le temp sans overwrite
    4. je copie le contenu de mon temp vers mon répertoire classes en appliquant le filtre et l'overwrite
    5. je supprime le répertoire temp


    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
    <mkdir dir="${project.build}/temp"/>
        	<!-- Change accent into unicode -->
        	<native2ascii dest="${project.build}/temp" src="${project.source}/resources">
        		<include name="**/ApplicationResources*.properties"/>
        		<include name="**/BillingForm*.properties"/>
        		<!-- Add any other resource file here -->
        	</native2ascii>
        	<copy todir="${project.build}/temp">
        		<fileset dir="${project.source}/resources">
        	    	<include name="**/*.properties"/>
        	        <include name="**/*.xml"/>
        	        <include name="**/*.txt"/>
        	        <include name="**/*.ttf"/>
        	        <include name="**/*.bmp"/>
        	        <exclude name="Web Content/**"/>
        	    </fileset>
        	</copy>
            <copy todir="${project.build}/classes" overwrite="true">
                <fileset dir="${project.build}/temp"/>
                <filterset>
                    <filter token="BUILD-DATE" value="${build.time}"/>
                </filterset>
            </copy>
        	<delete dir="${project.build}/temp"/>
    Il y a peut-être une façon de faire plus propre, dans ce cas n'hésitez pas à la partager.

Discussions similaires

  1. [sql2k][dts] : copie fichier texte vers table
    Par gatsu07 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/06/2006, 10h53
  2. copie fichier.zip d'un serveur à un autre serveur
    Par lisa-java dans le forum Langage
    Réponses: 3
    Dernier message: 14/06/2006, 16h30
  3. XML-copie fichier
    Par alison239 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 16/03/2006, 17h00
  4. copie fichier
    Par k_boy dans le forum MFC
    Réponses: 2
    Dernier message: 13/12/2005, 17h23
  5. Copy fichier a l'e'xécution d'un cd
    Par pc152 dans le forum Windows
    Réponses: 3
    Dernier message: 11/01/2005, 20h33

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