• Skip to primary navigation
  • Skip to content

Mauda

IT, Java and Music

Graduação   SCJP   Mestrado
  • Apresentação
  • Certificação Java
  • JPA
    • Exceptions
  • JSF
  • Versionamento
  • Contato

Criando um projeto Maven + Jasper Reports na IDE Eclipse

April 24, 2017 by Mauda 4 Comments

Conteúdo do Post:
  1. Jasper Reports – definição
  2. Incluindo Jasper Reports em um Projeto Básico no Eclipse
  3. Alterando o pom.xml
  4. Criação da pasta reports e copia dos Arquivos
  5. Alteração da classe App
  6. Alteração da classe AppTest
  7. Estado do Projeto
  8. Executando a classe App
  9. Executando a classe AppTest
  10. finally{

Olá Pessoal, tudo bom?

O post de hoje é relacionado a criação de um projeto básico em Java utilizando o controlador de dependências de bibliotecas Maven e adicionando a biblioteca Jasper Reports. Utilizaremos o post básico de criação de um projeto Maven, assim iremos continuar o projeto lá criado. Além disso descrevei um pouco sobre o Jasper Reports. Veja na continuação desse post…

Jasper Reports – definição

Existem várias bibliotecas que geram relatórios, mas para o dia a dia de uma empresa o mais comum é utilizar a biblioteca do Jasper Reports por ser open source. A biblioteca Jasper Reports é especializada na geração de documentos nos mais diversos formatos como pdfs, docs, xls. Ela pode gerar gráficos através da biblioteca JFreeChart e utilizar-se de subrelatórios, cabeçalhos e rodapés, facilitando assim o reuso desses arquivos. Nós temos duas frentes de trabalho ao utilizar a biblioteca, a primeira é o editor gráfico de relatórios, que veremos em outros posts, e a segunda é a utilização dos arquivos gerados pelo editor dentro da aplicação Java. Para o post de hoje iremos utilizar um arquivo .jasper já pronto.

Existem diversos formatos de arquivos gerados pela biblioteca. O primeiro, básico que o editor gera é um xml no formato próprio para a leitura pelo editor. Esse arquivo possui o formato jrxml (Jasper Report XML). Ele é um xml básico, com o schema de acordo com o formato Jasper.

Dentro do editor é possível compilar esse jrxml, gerando assim um arquivo no formato jasper. Essa compilação também pode ser automatizada via Maven, veremos isso com mais detalhes em outros posts.

Após gerado o jasper, dentro da aplicação Java é possível gerar o formato jrprint, o qual está preparado para gerar qualquer tipo de documento, seja pdf, doc, xls ou outros formatos. A Figura 01 abaixo exemplifica esse padrão de geração de arquivos pela biblioteca Jasper Reports.

Figura 01 – Formatos de arquivos gerados pelo Jasper Reports

Incluindo Jasper Reports em um Projeto Básico no Eclipse

O primeiro ponto é criar o projeto básico do Maven conforme o post relacionado.

Depois de criado, é hora de começar a adaptação nos arquivos desse projeto a fim de utilizar a biblioteca Jasper Reports.

Alterando o pom.xml

Abra o arquivo pom.xml, que se encontra na raiz do projeto. Adicione a dependência do Jasper Reports. Vamos adicionar a ultima versão estável, 6.4.0. O código destacado abaixo acrescenta essa dependência:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.4.0</version>
</dependency>
</dependencies>

Pronto, com esses códigos o maven irá adicionar a dependência do Jasper Reports ao projeto. Agora vamos alterar outros pontos para poder testá-la.

Criação da pasta reports e copia dos Arquivos

Todos os arquivos utilizados pelo Jasper Reports serão armazenados na pasta Reports. Assim devemos criar uma folder (não lembra? aqui) dentro da raiz do projeto de nome reports. Agora você deverá copiar para dentro dessa pasta os dois arquivos abaixo:

  • relatorioTeste.jrxml (link para download)
  • relatorioTeste.jasper (link para download)

Alteração da classe App

A classe App já criada anteriormente pelo Maven, deverá ser alterada, pois não realiza o teste necessário para a geração do PDF via Jasper Reports. As seguintes alterações deverão ser realizadas:

  • Acrescentar os imports das linhas 3 a 6;
  • Remover a linha System.out.println( “Hello World!” );
  • Em seu lugar acrescentar as linhas 15 a 27 do código que servem para criar o relatório no formato PDF;
  • Adicionar o throws JRException na linha 13 na declaração do método main;

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package br.com.mauda.SeminariosCientificos;
 
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
 
/**
* Hello world!
*
*/
public class App {
public static void main(String[] args) throws JRException
{
//Obtem o valor atual do sistema
long inicioContagem = System.currentTimeMillis();
//Compilacao no formato jasper para o jrprint
JasperFillManager.fillReportToFile("reports/relatorioTeste.jasper", null, new JREmptyDataSource(1));
System.err.println("Tempo de compilacao jasper -> jrprint: " + (System.currentTimeMillis() - inicioContagem));
//Reinicia o contador
inicioContagem = System.currentTimeMillis();
//Geracao do PDF
JasperExportManager.exportReportToPdfFile("reports/relatorioTeste.jrprint");
System.err.println("Tempo de geracao do PDF: " + (System.currentTimeMillis() - inicioContagem));
}
}

É interessante observar que criamos um arquivo jrprint para podermos gerar o relatório PDF. Como não colocamos a pasta de destino o pdf gerado estará na mesma pasta dos fontes originais, reports. Se você der um refresh (F5) nessa pasta aparecerão os arquivos gerados pela execução dessa classe.

Alteração da classe AppTest

A classe AppTest já criada anteriormente pelo Maven, deverá ser alterada, pois não realiza o teste necessário para gerar o relatório via Jasper Reports. As seguintes alterações deverão ser realizadas:

  • Remoção de todos os testes unitários anteriores;
  • Acrescentar os imports das linhas 3 a 8;
  • Adição do método de teste descrito nas linhas 15 a 30;

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package br.com.mauda.SeminariosCientificos;
 
import org.junit.Test;
 
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
 
/**
* Unit test for simple App.
*/
public class AppTest{
 
@Test
public void teste() throws JRException{
//Obtem o valor atual do sistema
long inicioContagem = System.currentTimeMillis();
//Compilacao no formato jasper para o jrprint
JasperFillManager.fillReportToFile("reports/relatorioTeste.jasper", null, new JREmptyDataSource(1));
System.err.println("Tempo de compilacao jasper -> jrprint: " + (System.currentTimeMillis() - inicioContagem));
//Reinicia o contador
inicioContagem = System.currentTimeMillis();
//Geracao do PDF
JasperExportManager.exportReportToPdfFile("reports/relatorioTeste.jrprint");
System.err.println("Tempo de geracao do PDF: " + (System.currentTimeMillis() - inicioContagem));
}
}

Esse teste unitário é basicamente igual ao da classe main. Apenas aqui estamos mostrando as duas formas de realizar a geração. Seja via main ou teste JUnit.

Estado do Projeto

Abaixo na Figura 02, temos as pastas e arquivos que foram criados no projeto. Utilize essa imagem para verificar se seu projeto está parecido com o da figura.

Figura 02 – Estado final do Projeto configurado

Executando a classe App

Clique na classe App com o botão direito do mouse, vá em run > Java Application e o java irá executar o método main da classe App. Caso esteja tudo certo irá aparecer as seguintes mensagens do console da aplicação:

1
2
Tempo de compilacao jasper -> jrprint: 2682
Tempo de geracao do PDF: 650

Os tempos de execução para cada item. Lembrando que esse tempo é em milisegundos. Se você observar a pasta reports aparecerão dois novos arquivos um relatorioTeste.jrprint e outro relatorioTeste.pdf. Abrindo o pdf haverão 3 textos:

  • Titulo
  • Texto do Detail
  • Rodape

Executando a classe AppTest

A classe AppTest possui um método de teste para gerar o mesmo pdf da execução acima. Assim as mesmas observações ditas ali valem aqui. Esse teste foi construído para rodar na ferramenta JUnit. Caso não conheça a ferramenta há um tutorial aqui.

finally{

Em posts futuros irei descrever melhor as constraints de validação (annotations) e outros aspectos do Bean Validation

Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!

Até um próximo post!

Filed Under: Jasper, Java, Maven Tagged With: jasper, jasper reports, Java, maven

About Mauda

Mestre em Informática, Analista de Sistemas, Professor, SCJP e Baterista. Desde 2002 trabalhando no mundo Java e ensinando pessoas sobre desenvolvimento de sistemas. Mais informações

Reader Interactions

Comments

  1. Wesley says

    March 4, 2018 at 7:49 pm

    Cara vc me salvou kkkk estou a 2 dias tentando gerar um teste 😀

    Reply
    • Mauda says

      March 4, 2018 at 10:04 pm

      Olá Wesley, tudo bom?

      Que bom que foi de grande ajuda!

      Precisando estamos aqui!

      Obrigado pelo feedback!

      Reply
  2. Luciano Mendel says

    February 7, 2021 at 8:02 pm

    Muito bacana seu artigo, parabéns.

    Reply
    • Mauda says

      February 19, 2021 at 9:36 pm

      Olá Luciano, tudo bom?

      Obrigado pelo feedback!

      Precisando estamos por aqui!

      Obrigado!

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Advertisements

Copyright © 2025 · Genesis Framework · WordPress · Log in