Pregunta

Cuando corro en mi maven install múltiples módulo Maven Proyecto siempre me dan el siguiente resultado:

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

Por lo tanto, busqué en Google un poco, pero todo lo que puedo encontrar es que tengo que añadir:

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

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

Configuración <encoding> para el maven-recursos-plugin o el experto compilador-plugin también no lo arregla.

Entonces, ¿cuál es el problema?

¿Fue útil?

Solución

Bueno, he encontrado el problema.

Consumo plugins de informes. En la documentación de la prueba de fallos-maven-plugin ( http: //maven.apache.org/plugins/maven-failsafe-plugin/integration-test-mojo.html ) he encontrado, que la configuración <encoding> - por supuesto - usos ${project.reporting.outputEncoding} por defecto. Por lo que añade 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>

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

Otros consejos

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

Si los archivos fuente de Java que contenga letras scandic que necesitan ser interpretados correctamente por el Java utilizada para compilar . (Letras por ejemplo scandic utilizados en constantes)

A pesar de que los archivos se almacenan en UTF-8 y el Maven está configurado para utilizar UTF-8, el Java System utilizado por el Maven seguirán usando el sistema por defecto (por ejemplo, en Windows:. CP1252).

Esta será visible sólo ejecutar las pruebas a través de experto (posiblemente la impresión de los valores de estas constantes en las pruebas. Las letras impresas scandic mostrarían como '') Si no han sido evaluados correctamente, esto corrompería los archivos de clase como resultado de compilación y quedar desapercibido.

Para evitar esto, se tiene que establecer la Java utilizada para compilar para utilizar codificación UTF-8. No es suficiente tener la configuración de codificación en el pom.xml experto, es necesario establecer la variable de entorno: JAVA_TOOL_OPTIONS = -Dfile.encoding = UTF8

Además, si utiliza Eclipse en Windows, es posible que tenga que configurar la codificación utilizada, además de esto (si se ejecuta la prueba individual a través de Eclipse).

Si se combinan las respuestas anteriores, por último, un pom.xml que configura para UTF-8 debe 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>

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>

Parece que la gente se mezclan una codificación de contenido con archivos creadas / recursos codificación. Tener propiedades sólo Maven no es suficiente. Tener -Dfile.encoding=UTF8 no es eficaz. Para no tener problemas con la codificación debe seguir las siguientes reglas simples

  1. Set experto en la codificación, como se describe anteriormente:
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  1. Siempre Establecer codificación de forma explícita, cuando se trabaja con archivos, cuerdas, IO en el código. Si no sigue esta regla, su aplicación depende del medio ambiente. El -Dfile.encoding=UTF8 exactamente es responsable de la configuración del entorno de tiempo de ejecución, pero no debe depender de ello. Si usted tiene miles de clientes, se necesita más esfuerzo para configurar y sistemas para encontrar problemas a causa de ella. Sólo tiene una dependencia adicional en el mismo que se puede evitar mediante el establecimiento de forma explícita. La mayoría de los métodos en Java que utilizan una codificación predeterminada marcados como obsoletos a causa de ella.

  2. Asegúrese de que el contenido, que está trabajando, está también en la misma codificación, que espera. Si no es así, los pasos anteriores no importan! Por ejemplo, un archivo no será procesada correctamente, si su codificación UTF-8 no es pero es de esperar que. Para comprobar la codificación de archivos en Linux:

  

fichero $ --mime F_PRDAUFT.dsv

  1. conjunto de clientes / servidor Fuerza codificar explícitamente en las peticiones / respuestas, aquí son ejemplos:
@Produces("application/json; charset=UTF-8")
@Consumes("application/json; charset=UTF-8")

Esperamos que esto sea útil a alguien.

En mi caso yo estaba usando el maven-dependency-plugin lo que a fin de resolver el problema que tenía que agregar la siguiente propiedad:

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top