Encoding in Maven (Character code)

Codificación en Maven (Código carácteres)

Si trabajas con sistemas bassados en Unix y Windows posiblemente te has deber encontrado con el pequeño problema del códgio de carácteres entre cada sistema.

Por ejemplo si escribes algún carácter como vocales con acentos o ñ’s, o cualquier otro ajeno al ingles te puedes encontrar con texto ilegible por el compilador, que es la causa por la cual falla al ejecutarse en otros sistemas.

Para visualizar los carácteres correctamente debes utilizar alguna de estas codificaciones:

  • Utilizar UTF-8 (nativo de Linux/Unix):
  • Utilizar Cp1252, (está por defecto en Windows XP)

Nota: Windows 7 utiliza UTF-8 por defecto.

Ahora hay que saber donde fue generado el código y donde lo quieres abrir,  para ahorrar la explicación a mi humilde opinión por la experiencia que tengo es ” trabajar con UTF-8“, así puede ser cargado en la mayoría de los sistemas sin problemas, ya sea en equipos Mac, Linux o Windows.

Vamos a ver donde se puede configurar esto:

Si utilizas Maven a través de un IDE

Puedes utilizar cualquiera de las siguientes opciones:

  • Cambiar el código de caracteres  (“encoding“) en las opciones de configuración de tu IDE, ya sea UTF-8 o ISO-8859-5. Netbeans, Eclipse, InteliJ y el JDeveoper te permiten hacer esto.
  • Agregar como parámetro de compilación a tu IDE la propiedad -Dencodig= [encoding], siendo encoding el tipo que necesitas.
  • Agregar al pom.xmlel código a utilizar, ejemplo:
    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties>

Si utilizas Maven desde consola

Puedes utilizar cualquiera de las siguientes opciones:

  • Al ejecutar cualquier “goal” de maven debes agregar al comando “-Dfile.encoding=UTF-8“, ejemplo “mvn compile -Dfile.encoding=UTF-8“.
  • Agregar al pom.xmlel código a utilizar, ejemplo:
    <properties> 
    <project.build.sourceEncoding>ISO-8859-5</project.build.sourceEncoding> 
    </properties>
  • Modificar el script mvn.bat (win) o mvn.sh(unix) y buscas una linea parecida a la siguiente y le agregas el encodig:
    #UNIX SYSTEM
    exec "$JAVACMD" \
      $MAVEN_OPTS \
      -classpath "${M2_HOME}"/boot/plexus-classworlds-*.jar \
      "-Dfile.encoding=UTF-8" \
      "-Dclassworlds.conf=${M2_HOME}/bin/m2.conf" \
      "-Dmaven.home=${M2_HOME}"  \
      ${CLASSWORLDS_LAUNCHER} "$@"

    En windows se ve de esta forma:

    #WINDOWS SYSTEM
    set CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
    
    %MAVEN_JAVA_EXE% -Dfile.encoding=UTF-8
    %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% 
    "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" 
    "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%

Con estas pequeñas modificaciones el código es legible en cualquier sistema operativo.

Saludos

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s