Comment configurer le codage dans Maven?

Lorsque je lance maven install sur mon projet maven multi-modules, j’obtiens toujours la sortie suivante:

 [WARNING] File encoding has not been set, using platform encoding UTF-8, ie build is platform dependent! 

Donc, j’ai googlé un peu, mais tout ce que je peux trouver, c’est que je dois append:

  UTF-8  

… à mon pom.xml. Mais c’est déjà là (dans le parent pom.xml ).

Configurer pour le plugin maven-resources-plugin ou le plugin maven-comstackr-plugin ne le corrige pas non plus.

Donc quel est le problème?

OK, j’ai trouvé le problème.

J’utilise des plugins de reporting. Dans la documentation du plugin failafe-maven ( http://maven.apache.org/plugins/maven-failsafe-plugin/integration-test-mojo.html ), j’ai trouvé que la configuration – bien sûr – utilise ${project.reporting.outputEncoding} par défaut. J’ai donc ajouté la propriété en tant qu’élément enfant de l’élément de project et tout va bien maintenant:

  UTF-8 UTF-8  

Voir aussi http://maven.apache.org/general.html#encoding-warning

Cela s’appendait aux précédents, si quelqu’un rencontre un problème avec des lettres de scandale qui ne sont pas résolues avec la solution ci-dessus.

Si les fichiers source Java contiennent des lettres de scandale, ils doivent être interprétés correctement par le Java utilisé pour la compilation . (par exemple, les lettres de scandale utilisées dans les constantes)

Même si les fichiers sont stockés dans UTF-8 et que le Maven est configuré pour utiliser UTF-8, le système Java utilisé par Maven utilisera toujours le système par défaut (par exemple, sous Windows: cp1252).

Cela ne sera visible qu’en exécutant les tests via maven (en imprimant éventuellement les valeurs de ces constantes dans les tests. Les lettres de scandale imprimées afficheront ‘‘) Si elles ne sont pas testées correctement, les fichiers de classe seront corrompus laissé inaperçu.

Pour éviter cela, vous devez définir le Java utilisé pour la compilation afin d’utiliser le codage UTF-8. Il ne suffit pas d’avoir les parameters d’encodage dans maven pom.xml, vous devez définir la variable d’environnement: JAVA_TOOL_OPTIONS = -Dfile.encoding = UTF8

De plus, si vous utilisez Eclipse sous Windows, vous devrez peut-être définir le codage utilisé en plus (si vous exécutez un test individuel via Eclipse).

Si vous combinez les réponses ci-dessus, un fichier pom.xml configuré pour UTF-8 devrait apparaître comme cela.

pom.xml

   4.0.0 YOUR_COMPANY YOUR_APP 1.0.0-SNAPSHOT  1.8 UTF-8 UTF-8        org.apache.maven.plugins maven-comstackr-plugin 3.7.0  ${project.java.version} ${project.java.version} ${project.build.sourceEncoding}    org.apache.maven.plugins maven-resources-plugin 3.0.2  ${project.build.sourceEncoding}      

Essaye ça:

  ...    org.apache.maven.plugins maven-resources-plugin 2.7  ... UTF-8 ...    ...  ...  

Dans mon cas, j’utilisais le maven-dependency-plugin afin de résoudre le problème, j’ai dû append la propriété suivante:

  UTF-8 

Voir le plug-in de ressources Apache Maven / Spécification d’un schéma de codage de caractères