sábado, julho 27, 2013

Configurando encoding em um projeto Maven

Imagine receber o erro abaixo ao executar o comando mvn clean compile:

[INFO] ------------------------------------------------------------------------
[INFO] Building FOO BAR 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ foo-bar ---
[INFO] Deleting /usr/local/jenkins/jobs/foo-bar/workspace/target
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ foo-bar ---
[debug] execute contextualize
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /usr/local/jenkins/jobs/foo-bar/workspace/src/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ foo-bar ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 31 source files to /usr/local/jenkins/jobs/foo-bar/workspace/target/classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /usr/local/jenkins/jobs/foo-bar/workspace/src/com/foo/bar/MyProject.java:[6,34] unmappable character for encoding UTF8

Isso acontece por que o seu código está usando um encoding diferente de UTF-8. Para resolver esse problema você terá que especificar o encoding no pom.xml do seu projeto.

...
  
    Cp1252
  
...
  
    
      
        maven-compiler-plugin
        3.1
        
          Cp1252
        
      
    
  
...

Pronto! Feito isso o build voltará a funcionar.