quinta-feira, 1 de abril de 2010

Configurações para compilar o jasper 3.7.1 com o maven

Estava fazendo um projeto para retornar relatórios PDF quando requisitado certas informações via WEB.
As ferramentas utilizadas eram: maven 2 e iReport 3.7.1

Ao compilar o relatório via iReport tudo funcionava, mas quando pedia para o maven fazer o serviço, aparecia uma infeliz mensagem: "Language "groovy" not supported by this report compiler." e logo abaixo "Expecting "java" instead."

Já estava desistindo e regredindo versões por causa da mensagem quando resolvi investir um pouco de tempo para pesquisar. Determinei um time-box para não ficar viajando muito e por fim encontrei a seguinte solução.

Primeiramente abri o arquivo jrxml e removi o trecho language="groovy". Mandei compilar no maven e funcionou, mas fiquei pensando se teria que fazer isto para todos os relatórios que tinham pela frente. Estava dentro do meu time-box e resolvi pesquisar mais.

Primeiro pesquisei porque eu usaria o groovy. Resumidamente, o groovy foi adicionado ao jasper para simplificar as expressões colocadas nos relatórios, ou seja, o que antes eu faria new Double($F{f1}.doubleValue() +
$F{f2}.doubleValue()) com o groovy eu faço $F{f1} + $F{f2}. Quer argumentação maior que esta?

Adicionei o groovy-all-1.7.1 às dependencias do plugin do jasper e na configuração do plugin apontei o compilador JRGroovyCompiler.

Fim.

A configuração ficou assim:


<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jasperreports-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compile-reports</goal>
</goals>
</execution>
</executions>

<configuration>
<compiler>net.sf.jasperreports.compilers.JRGroovyCompiler</compiler>
</configuration>

<dependencies>
<dependency>
<groupId>jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>3.7.1</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.15</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>1.7.1</version>
</dependency>
</dependencies>
</plugin>

Um comentário: