web-dev-qa-db-fra.com

Comment définir -Dfile.encoding dans build.xml de ant?

J'ai Java fichiers source avec encodage iso-8859-1. Lorsque j'exécute ant, j'obtiens "avertissement: caractère non mappable pour l'encodage UTF-8"). Je peux éviter cela si j'exécute ant -Dfile.encoding = iso-8859-1 ou ajoute encoding = "ISO-8859-1" à chaque instruction javac.

Existe-t-il un moyen de définir la propriété globalement dans build.xml? <property name = "file.encoding" value = "ISO-8859-1"> ne fonctionne pas. Je sais que je peux ajouter une propriété foo = ISO-8859-1 et définir encoding = "$ {foo}" à chaque instruction javac, mais j'essaie d'éviter cela.

47
neu242

Quelques options:

  1. ajouter -Dfile.encoding=iso-8859-1 à ton ANT_OPTS variable d'environnement
  2. utilisation <presetdef> pour configurer les paramètres par défaut de tous vos <javac> invocations
33
carej

Si vous avez des fichiers encodés d'une manière particulière, il est probablement préférable de le dire à javac plutôt que de forcer l'ensemble de la JVM à utiliser un encodage particulier. La tâche javac possède un attribut de codage pour cette raison.

<javac srcdir="${src.dir}" destdir="${build.classes.dir}" encoding="iso-8859-1" />

Mais vraiment, vous devez simplement convertir les fichiers source en UTF-8. Tout a meilleur goût en UTF-8. :)

71
Dominic Mitchell

Avant de changer le fichier de construction, je reçois Java erreur de compilation comme ci-dessous.

ApplicationConstant.Java:73: erreur: caractère non mappable pour l'encodage asciipublic static final String INVALID_MDTVERSION_SECOND = " This not compatible with the server’s Version";

J'ai rencontré cette erreur quand j'avais l'habitude d'avoir ant Java target as:

 <javac encoding="ascii"...>

Que j'ai changé comme ci-dessous

<javac encoding="iso-8859-1" ...> 

Ce problème a été résolu.

3
Laxman G

Ant elle-même ne peut pas définir les propriétés système, mais si vous le souhaitez vraiment, vous pouvez écrire un programme Java qui définit la propriété système et l'exécuter à partir d'Ant.

1
skaffman