Cómo configurar la codificación en Maven?


Cuando corro maven install en mi proyecto maven de módulos múltiples siempre obtengo la siguiente salida:

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

Así que busqué en Google un poco, pero todo lo que puedo encontrar es que tengo que agregar:

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

To a mi pom.XML. Pero ya está ahí (en el padre pom.xml).

Configurar <encoding> para el maven-resources-plugin o el maven-compiler-plugin tampoco lo soluciona.

Entonces, ¿cuál es el problema?

Author: isapir, 2010-06-10

5 answers

OK, encontré el problema.

Uso algunos plugins de informes. En la documentación del plugin failsafe-maven (http://maven.apache.org/plugins/maven-failsafe-plugin/integration-test-mojo.html ) Encontré, que la configuración <encoding> - por supuesto - usa ${project.reporting.outputEncoding} por defecto. Así que agregué la propiedad como un elemento hijo del elemento project y todo está bien ahora:

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

Ver también http://maven.apache.org/general.html#encoding-warning

 453
Author: Ethan Leroy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-01 22:24:17

Esto sería además de anterior, si alguien se encuentra con un problema con las letras scandic que no se resuelve con la solución anterior.

Si los archivos fuente de java contienen letras scandic, deben ser interpretados correctamente por el Java utilizado para compilar. (por ejemplo, letras scandic utilizadas en constantes)

Incluso si los archivos están almacenados en UTF-8 y el Maven está configurado para usar UTF-8, el Java del Sistema utilizado por el Maven seguirá utilizando el valor predeterminado del sistema (por ejemplo. en Windows: cp1252).

Esto solo será visible ejecutando las pruebas a través de maven (posiblemente imprimiendo los valores de estas constantes en las pruebas. Las letras scandic impresas mostrarían como'>') Si no se prueba correctamente, esto dañaría los archivos de clase como resultado de compilación y se dejaría desapercibido.

Para evitar esto, debe configurar el Java utilizado para compilar para usar la codificación UTF-8. No es suficiente tener la configuración de codificación en el maven pom.xml, necesita configurar el entorno variable: JAVA_TOOL_OPTIONS = - Dfile.encoding = UTF8

También, si utiliza Eclipse en Windows, es posible que necesite establecer la codificación utilizada además de esto (si ejecuta pruebas individuales a través de eclipse).

 34
Author: Ville Myrskyneva,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-06 05:27:53

Si combina las respuestas anteriores, finalmente un pom.xml que se configuró para UTF-8 debería parecer así.

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>
 24
Author: bhdrk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-27 07:44:43

Prueba esto:

<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>
 4
Author: fabrik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-17 22:38:57

En mi caso estaba usando el maven-dependency-plugin así que para resolver el problema tuve que agregar la siguiente propiedad:

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

Ver Plugin de Recursos Apache Maven / Especificación de un esquema de codificación de caracteres

 0
Author: isapir,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-17 23:41:01