Set-up del progetto
Per comodità utilizzeremo Maven come sistema di build, questo ci permetterà di creare al volo un progetto Java con tutte le directory necessarie e di includere la libreria Jasper Reports senza perderci troppo tempo. Purtroppo Maven è un sistema piuttosto complesso, per chi non l’avesse installato consigliamo di seguire il tutorial che si trova sul sito ufficiale: Maven in 5 Minutes.
Una volta installato Maven possiamo creare lo scheletro del nostro progetto, eseguendo il goal:
mvn archetype:generate -DgroupId=it.artera.jr -DartifactId=jasper-tutorial -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Attenzione: il comando deve essere digitato tutto sulla stessa linea! Eventualmente copiatelo in un editor, eliminate i fine-linea e incollate la stringa di comando sulla vostra console.
Verrà creata una directory jasper-tutorial con questi contenuti:
[html]
<ul>
<li><em>pom.xml</em> : è il cosiddetto <em>project descriptor</em>, che ha la stessa funzione dei vecchi <em>makefile</em>;</li>
<li><em>src/main/java</em> : sorgenti dell’applicazione;</li>
<li><em>src/test/java</em> : test JUnit;</li>
</ul>
[/html]
Aggiungiamo quindi la directory src/main/jasperreports, dove salveremo i sorgenti dei report. Tenerli in una directory separata ci permette di usare una caratteristica molto apprezzata di Jasper Reports, ovvero di poter compilare i report durante la fase di build del progetto; ciò ovviamente evita di dover compilare a mano tutti i report tramite iReport, automatizzando il processo. Molto comodo!
Per sfruttare questa caratteristica dobbiamo:
[html]
<ul>
<li>aggiungere Jasper Reports come <em>dependency</em> del progetto, in modo che Maven possa scaricare tutti i jar necessari;</li>
<li>indicare a Maven che vogliamo usare il plugin <em><a title="Jasper Reports Maven Plugin" href="http://mojo.codehaus.org/jasperreports-maven-plugin/" target="_blank">jasperreports-maven-plugin</a></em>;</li>
<li>specificare la configurazione del plugin stesso.</li>
</ul>
[/html]
Ecco il file pom.xml dopo le dovute modifiche:
[html]
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>it.artera.jr</groupId>
<artifactId>jasper-tutorial</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>jasper-tutorial</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jasperreports-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>compile-reports</goal>
</goals>
</execution>
</executions>
<dependencies>
<!–note this must be repeated here to pick up correct xml validation –>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>${jasperreports.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>jasperreports</id>
<url>http://jasperreports.sourceforge.net/maven2</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>${jasperreports.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<jasperreports.version>3.7.2</jasperreports.version>
</properties>
</project>
[/html]
Una volta preparato il tutto, consigliamo di eseguire un commit sul proprio sistema di versioning dei sorgenti prima di eseguire il comando:
mvn package
che esegue un build completo. Durante il primo di questi build Maven scaricherà parecchie librerie per cui ci potrebbe mettere anche parecchi minuti a seconda del tipo di connessione, ma quelli successivi saranno sicuramente più veloci. È possibile generare anche i file di progetto per Eclipse:
mvn eclipse:eclipse
Mentre Netbeans, che ha il supporto nativo per Maven, non ha bisogno di alcuna configurazione.
Un report di test
Apriamo iReport e creiamo un report in questo modo:
- modello: Simple Blue;
- salviamolo in src/main/jasperreports/testReport.jrxml;
- selezioniamo la sorgente dati vuota;
- terminiamo il wizard.
A questo punto ci verrà mostrato un report vuoto.
- dalla finestra Report inspector clicchiamo con il tasto destro su Campi e aggiungiamone uno, chiamandolo name;
- aggiungiamo un Campo di testo nella banda denominata Detail 1, inserendo questa espressione:
$F{name}
- nella finestra Proprietà impostiamo Lingua da Groovy a Java.
Una volta salvato il report sarà possibile compilarlo automaticamente con l’aiuto degli strumenti visti nel paragrafo precedente, con il comando:
mvn package
Maven utilizza la directory target come destinazione dei build, e se guardiamo in target/classes troveremo il report compilato.
Sviluppi
Nel prossimo articolo vedremo finalmente come invocare l’esecuzione dei report direttamente da Java!
Linkografia
- Utilizzare jasper reports – preparare un ambiente di lavoro;
- Maven;
- Jasper Reports Maven Plugin.