Il presente articolo mostra come creare un progetto di tipo Dynamic Web Project utilizzando Maven versione 3 o superiore.
Generazione del Progetto
Il primo passo del set-up dell’applicazione consiste nell’esecuzione del comando maven generate
. Per farlo aprire una shell di comando e posizionarsi nella cartella in cui si intende creare il progetto. Quindi utilizzare la seguente istruzione, valorizzando opportunamente le proprietà artifactId
e groupId
:
1 2 3 4 |
mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false |
1 2 3 4 |
mvn archetype:generate -DgroupId=it.javaboss -DartifactId=my-web-app -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false |
Quando Maven ha terminato il suo lavoro, aprire Eclipse, dove sarà stato precedentemente configurato Maven, ed importare il progetto (File -> Import -> Maven-> Existing Maven Project). Noterete immediatamente che Maven ha generato un progetto del tipo Dynamic Web Module ma con la tipica struttura di un progetto Maven (conforme al suo Standard Directory Layout).
A questo punto apriamo il file web.xml
collocato nella cartella src/main/webapp/WEB-INF
che dovrebbe apparire così:
1 2 3 4 5 6 7 |
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> </web-app> |
Secondo la direttiva DOCTYPE
il progetto creato è un Dynamic Web Module versione 2.3 e se non volete perdere ore cercando di comprendere perché le vostre JSP non interpretano le espressioni EL vi consiglio vivamente di aggiornare la versione almeno alla 2.5. In alternativa dovrete inserire in tutte le vostre JSP la direttiva:
1 |
<jsp:directive.page isELIgnored="false"/> |
In questo post abbiamo preferito la prima soluzione quindi il nostro file web.xml
è diventato:
1 2 3 4 5 6 |
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <display-name>my-web-app</display-name> </web-app> |
Completare la procedura aggiornando anche la versione nel Project Facets. Se Eclipse ve lo impedisce potete disabilitare la facet Dynamic Web Module e quindi eseguire Maven->Update Projec
t e Maven provvederà a abilitare la facet nella versione corretta.
Aggiornamento del POM
Siamo finalmente pronti per configurare il nostro progetto attraverso l’aggiornamento del file POM di Maven collocato nella root del progetto. In sintesi si tratta di è un file XML che contiene tutte le informazioni di configurazione del progetto ed in particolare le sue dipendenze ed i dettagli per la compilazione e l’impacchettamento dello stesso.
Servlet API e JSP
Aprire il pom.xml
ed aggiungere le due dipendenze necessarie all’utilizzo delle JSP nella sezione dependencies
:
1 2 3 4 5 6 7 8 9 10 |
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> |
Queste aggiungeranno al progetto le Servlet API e le JSTL (versione 1.2). Quest’ultima è una libreria di tag basata su JSP (JSTL sta per JSP Standard Tag Library) che offre funzionalità per il controllo del flusso, la formattazione di date e numeri, l’internazionalizzazione e diverse funzioni EL di utilità.
Tomcat
Se intendete utilizzare Tomcat (versione 7.0.70) come servlet container potete inserire la seguente dependency al posto delle Servlet API.
1 2 3 4 5 |
<dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jsp-api</artifactId> <version>7.0.70</version> </dependency> |
Compilazione e Deploy
Inserire nel POM i plugin maven-compiler-plugin
e tomcat7-maven-plugin
, il primo per la compilazione del codice, il secondo per il deploy a caldo su Tomcat 7. Inserire quindi nella sezione plugins
il seguente XML:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <inherited>true</inherited> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://localhost:8080/manager/text</url> <server>tomcat7</server> <path>/${project.build.finalName}</path> </configuration> </plugin> |
Si noti che il plugin tomcat7-maven-plugin
necessita di una ulteriore configurazione di Tomcat e Maven. Innanzitutto aprite il file tomcat-users.xml
nella directory conf
di Tomcat 7 e configurate un utente per eseguire script nella sua consolle come mostrato di seguito:
1 2 |
<role rolename="manager-script"/> <user password="admin" username="admin" roles="manager-script"/> |
Quindi aprite il file settings.xml
di Maven, presente nella cartella .m2
(quella dove sono presenti tutte le dipendenze scaricate dal framework) e definite il vostro server di deploy Tomcat, inserendo le credenziali definite sopra. Notate che il server id tomcat7
è lo stesso definito nel plugin del POM
.
1 2 3 4 5 6 7 |
<servers> <server> <id>tomcat7</id> <username>admin</username> <password>admin</password> </server> </servers> |