Question

Quand je lance maven install sur mon module plusieurs Maven projet, je reçois toujours la sortie suivante:

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

Alors, je googlé un peu, mais tout ce que je peux trouver est que je dois ajouter:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

... à mon pom.xml. Mais il est déjà là (dans la pom.xml mère).

Configuration <encoding> pour le plugin Maven compilateur-ressources maven-plugin-ou également ne fixe pas.

Alors, quel est le problème?

Était-ce utile?

La solution

OK, je l'ai trouvé le problème.

J'utilise des plug-ins de rapports. Dans la documentation de la (-plugin-maven http failsafe: //maven.apache.org/plugins/maven-failsafe-plugin/integration-test-mojo.html ) Je trouve que la configuration de <encoding> - bien sûr - utilisations ${project.reporting.outputEncoding} par défaut. Donc, j'ai ajouté la propriété comme un élément enfant de l'élément project et tout va bien maintenant:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

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

Autres conseils

Ce serait en plus précédente, si quelqu'un rencontre un problème avec les lettres scandic qui ne résoud pas la solution ci-dessus.

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

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

Ce ne sera visible que l'exécution des tests par Maven (impression peut-être les valeurs de ces constantes dans les tests. Les lettres imprimées scandic montreraient que « ») Si non testé correctement, cela pourrait corrompre les fichiers de classe et à la suite de la compilation rester inaperçu.

Pour éviter cela, vous devez définir le Java utilisé pour la compilation à utiliser encodage UTF-8. Il ne suffit pas d'avoir les paramètres de codage dans le pom.xml Maven, vous devez définir la variable d'environnement: JAVA_TOOL_OPTIONS = -Dfile.encoding = UTF8

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

Si vous combinez les réponses ci-dessus, enfin un pom.xml qui configuré pour UTF-8 doit sembler que.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>YOUR_COMPANY</groupId>
    <artifactId>YOUR_APP</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <properties>
        <project.java.version>1.8</project.java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <dependencies>
        <!-- Your dependencies -->
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>${project.java.version}</source>
                    <target>${project.java.version}</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

Essayez ceci:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.7</version>
        <configuration>
          ...
          <encoding>UTF-8</encoding>
          ...
        </configuration>
      </plugin>
    </plugins>
    ...
  </build>
  ...
</project>

Il semble que les gens se mélangent un codage de contenu avec des fichiers de construction / ressources encodage. Ayant des propriétés que Maven ne suffit pas. Ayant -Dfile.encoding=UTF8 pas efficace. Pour éviter d'avoir des problèmes avec vous encodant devez suivre les règles simples suivantes

  1. Définir le codage Maven, comme décrit ci-dessus:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  1. Toujours définir le codage explicitement, lorsque le travail avec des fichiers, des chaînes, IO dans votre code. Si vous ne suivez pas cette règle, votre application dépendent de l'environnement. Le -Dfile.encoding=UTF8 est exactement responsable de la configuration de l'environnement d'exécution, mais nous ne devrions pas dépendre. Si vous avez des milliers de clients, il faut plus d'efforts pour les systèmes de configure et de trouver des problèmes à cause de cela. Vous avez juste une dépendance supplémentaire à ce que vous pouvez éviter en définissant explicitement. La plupart des méthodes en Java qui utilisent un encodage par défaut sont marqués comme dépréciée à cause de cela.

  2. Assurez-vous que le contenu, vous travaillez avec, est également dans le même encodage, que vous attendez. Dans le cas contraire, les étapes précédentes ne comptent pas! Par exemple, un fichier ne sera pas traitée correctement, si son encodage n'est pas UTF8 mais vous vous attendez. Pour vérifier l'encodage de fichiers sous Linux:

  

fichier $ --mime F_PRDAUFT.dsv

  1. ensemble force clients / serveur coder explicitement dans les demandes / réponses, voici des exemples:
@Produces("application/json; charset=UTF-8")
@Consumes("application/json; charset=UTF-8")

Espérons que cela sera utile à quelqu'un.

Dans mon cas, j'utilisais le maven-dependency-plugin donc afin de résoudre le problème que je devais ajouter la propriété suivante:

  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

Apache Maven Ressources Plugin / Spécification d'un schéma de codage de caractères

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top