Java: come scrivere un build.xml di ant per compilare e pacchettizzare (WAR/EAR)

Come sapete, tutti i Java application server (come ad es. Tomcat) richiedono il deploy di un applicativo sottoforma di un pacchetto EAR. Ma come è composto un pacchetto EAR?

Un pacchetto EAR non è altro che un file jar (che a sua volta è un file zip) che contiene al suo interno:

  • un descrittore di deploy, sotto la directory META-INF (application.xml) che contiene informazioni di gestione riguardo all’applicazione in corso di deploy, come il nome, il contextpath, etc.
  • generalmente, contiene un file WAR che contiene, al suo interno, il modulo web J2EE dell’applicazioni.

A sua volta, un file WAR è un file JAR composto da:

  • il file web.xml sotto la directory WEB-INF che definisce la struttura dell’applicazione web.
  • i file compilati (.class) dell’applicazione posti sotto WEB-INF/classes

Risalendo a ritroso, per creare un EAR è necessario:

  1. Compilare i files dell’applicazione;
  2. Spostarli sotto WEB-INF/classes insieme ai files della webapp (jsp, files statici, etc.)
  3. Creare un WAR (jar)
  4. Creare un EAR inglobando anche il meta-descrittore del deploy

Per fare tutto questo è sufficiente usare ant (o meglio maven, ma questo ve lo spiegherò in un altro post!) con diversi target. Vediamo un esempio che ho realizzato:




















































Come potete vedere il target chiamato “main” si occupa di:

  • compilare tutte le classi del progetto (javac) usando il classpath di riferimento
  • copiare i files di configurazione (come il già menzionato web.xml) sotto /WEB-INF (copy)
  • copiare i compilati delle classi sotto /WEB-INF/classes (copy)
  • creare un archivio WAR (war) usando i files specificati in fileset e usando il web.xml specificato sotto webxml
  • creare un archivio EAR (ear) usando i files specificati in fileset usando il meta-application specificato in appxml e copiando i files da fileset.

Questo è lo scheletro di build.xml che uso per pacchettizzare velocemente un’applicazione J2EE (infatti basta lanciare ant build.xml main) da linea di comando per compilare, copiare tutti i files necessari e creare WAR ed EAR!).

4 thoughts on “Java: come scrivere un build.xml di ant per compilare e pacchettizzare (WAR/EAR)”

Leave a Reply

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