Ant - Creazione di file WAR

La creazione di file WAR con Ant è estremamente semplice e molto simile all'attività di creazione di file JAR. Dopotutto, il file WAR, come il file JAR, è solo un altro file ZIP.

L'attività WAR è un'estensione dell'attività JAR, ma ha alcune belle aggiunte per manipolare ciò che va nella cartella WEB-INF / classes e generare il file web.xml. L'attività WAR è utile per specificare un particolare layout del file WAR.

Poiché l'attività WAR è un'estensione dell'attività JAR, tutti gli attributi dell'attività JAR si applicano all'attività WAR.

Sr.No. Attributi e descrizione
1

webxml

Percorso del file web.xml

2

lib

Un raggruppamento per specificare cosa va nella cartella WEB-INF \ lib.

3

classes

Un raggruppamento per specificare cosa va nella cartella WEB-INF \ classes.

4

metainf

Specifica le istruzioni per la generazione del file MANIFEST.MF.

Continuando il nostro Hello WorldProgetto applicazione fax, aggiungiamo un nuovo target per produrre i file jar. Ma prima consideriamo il compito di guerra. Considera il seguente esempio:

<war destfile = "fax.war" webxml = "${web.dir}/web.xml">
   <fileset dir = "${web.dir}/WebContent">
      <include name = "**/*.*"/>
   </fileset>
   
   <lib dir = "thirdpartyjars">
      <exclude name = "portlet.jar"/>
   </lib>
   
   <classes dir = "${build.dir}/web"/>
</war>

Come negli esempi precedenti, il web.dir variabile fa riferimento alla cartella web di origine, ovvero la cartella che contiene i file JSP, css, javascript ecc.

Il build.dirla variabile fa riferimento alla cartella di output: qui è possibile trovare le classi per il pacchetto WAR. In genere, le classi verranno raggruppate nella cartella WEB-INF / classes del file WAR.

In questo esempio, stiamo creando un file war chiamato fax.war. Il file WEB.XML si ottiene dalla cartella di origine web. Tutti i file dalla cartella "WebContent" sotto il web vengono copiati nel file WAR.

La cartella WEB-INF / lib viene popolata con i file jar dalla cartella jars di terze parti. Tuttavia, stiamo escludendo portlet.jar poiché è già presente nella cartella lib del server delle applicazioni. Infine, stiamo copiando tutte le classi dalla cartella web della directory build e inserendole nella cartella WEB-INF / classes.

Avvolgi il compito di guerra all'interno di un bersaglio Ant (di solito pacchetto) ed eseguilo. Questo creerà il file WAR nella posizione specificata.

È del tutto possibile annidare i direttori di classi, lib, metainf e webinf in modo che vivano in cartelle sparse ovunque nella struttura del progetto. Tuttavia, le migliori pratiche suggeriscono che il progetto Web dovrebbe avere la struttura del contenuto Web simile alla struttura del file WAR. Il progetto Fax Application ha la sua struttura delineata utilizzando questo principio di base.

Per eseguire l'attività di guerra, racchiudila in un obiettivo, più comunemente, l'obiettivo di compilazione o pacchetto, ed eseguili.

<target name = "build-war">
   <war destfile = "fax.war" webxml = "${web.dir}/web.xml">
      <fileset dir = "${web.dir}/WebContent">
         <include name = "**/*.*"/>
      </fileset>
      
      <lib dir = "thirdpartyjars">
         <exclude name = "portlet.jar"/>
      </lib>
      
      <classes dir = "${build.dir}/web"/>
   </war>
</target>

L'esecuzione di Ant su questo file creerà il file fax.war file per noi.

Il risultato seguente è il risultato dell'esecuzione del file Ant:

C:\>ant build-war
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 12.3 seconds

Il file fax.war si trova ora nella cartella di output. Il contenuto del file war sarà:

fax.war:
   +---jsp             This folder contains the jsp files
   +---css             This folder contains the stylesheet files
   +---js              This folder contains the javascript files
   +---images          This folder contains the image files
   +---META-INF        This folder contains the Manifest.Mf
   +---WEB-INF
      +---classes   This folder contains the compiled classes
      +---lib       Third party libraries and the utility jar files
      WEB.xml       Configuration file that defines the WAR package