Ant - Progetti di costruzione

Ora che abbiamo imparato a conoscere i tipi di dati in Ant, è tempo di mettere in pratica questa conoscenza. Costruiremo un progetto in questo capitolo. Lo scopo di questo capitolo è costruire un file Ant che compili le classi java e le inserisca nella cartella WEB-INF \ classes.

Considera la seguente struttura del progetto:

  • Gli script del database vengono archiviati nel file db cartella.

  • Il codice sorgente java è archiviato nel file src cartella.

  • Le immagini, js, META-INF, stili (css) sono archiviate nel file war cartella.

  • I JSP vengono archiviati in jsp cartella.

  • I file jar di terze parti vengono archiviati nel file lib cartella.

  • I file di classe java sono archiviati in WEB-INF\classes cartella.

Questo progetto costituisce il Hello World Applicazione fax per il resto di questo tutorial.

C:\work\FaxWebApplication>tree
Folder PATH listing
Volume serial number is 00740061 EC1C:ADB1
C:.
+---db
+---src
.  +---faxapp
.  +---dao
.  +---entity
.  +---util
.  +---web
+---war
   +---images
   +---js
   +---META-INF
   +---styles
   +---WEB-INF
      +---classes
      +---jsp
      +---lib

Ecco il build.xml richiesto per questo progetto. Consideriamolo pezzo per pezzo.

<?xml version = "1.0"?>
<project name = "fax" basedir = "." default = "build">
   <property name = "src.dir" value = "src"/>
   <property name = "web.dir" value = "war"/>
   <property name = "build.dir" value = "${web.dir}/WEB-INF/classes"/>
   <property name = "name" value = "fax"/>

   <path id = "master-classpath">
      <fileset dir = "${web.dir}/WEB-INF/lib">
         <include name = "*.jar"/>
      </fileset>
      
      <pathelement path = "${build.dir}"/>
   </path>

   <target name = "build" description = "Compile source tree java files">
      <mkdir dir = "${build.dir}"/>
      
      <javac destdir = "${build.dir}" source = "1.5" target = "1.5">
         <src path = "${src.dir}"/>
         <classpath refid = "master-classpath"/>
      </javac>
   </target>
 
   <target name = "clean" description = "Clean output directories">
      <delete>
         <fileset dir = "${build.dir}">
            <include name = "**/*.class"/>
         </fileset>
      </delete>
   </target>
</project>

Innanzitutto, dichiariamo alcune proprietà per le cartelle di origine, Web e build.

<property name = "src.dir" value = "src"/>
<property name = "web.dir" value = "war"/>
<property name = "build.dir" value = "${web.dir}/WEB-INF/classes"/>

In questo esempio:

  • src.dir fa riferimento alla cartella di origine del progetto in cui è possibile trovare i file di origine java.

  • web.dir fa riferimento alla cartella delle sorgenti web del progetto, dove puoi trovare i file JSP, web.xml, css, javascript e altri file relativi al web

  • build.dir si riferisce alla cartella di output della compilation del progetto.

Le proprietà possono fare riferimento ad altre proprietà. Come mostrato nell'esempio sopra, ilbuild.dir fa riferimento alla proprietà web.dir proprietà.

In questo esempio, il src.dir fa riferimento alla cartella di origine del progetto.

L'obiettivo predefinito del nostro progetto è il compilebersaglio. Ma prima diamo un'occhiata al fileclean bersaglio.

Il target pulito, come suggerisce il nome, elimina i file nella cartella build.

<target name = "clean" description = "Clean output directories">
   <delete>
      <fileset dir = "${build.dir}">
         <include name = "**/*.class"/>
      </fileset>
   </delete>
</target>

Il percorso classe master contiene le informazioni sul percorso classe. In questo caso, include le classi nella cartella build e i file jar nella cartella lib.

<path id = "master-classpath">
   <fileset dir = "${web.dir}/WEB-INF/lib">
      <include name = "*.jar"/>
   </fileset>
   
   <pathelement path = "${build.dir}"/>
</path>

Infine, l'obiettivo di compilazione per creare i file. Prima di tutto, creiamo la directory build, se non esiste. Quindi eseguiamo il comando javac (specificando jdk1.5 come compilazione di destinazione). Forniamo la cartella di origine e il percorso di classe all'attività javac e gli chiediamo di rilasciare i file di classe nella cartella di compilazione.

<target name = "build" description = "Compile main source tree java files">
   <mkdir dir = "${build.dir}"/>
   
   <javac destdir = "${build.dir}" source = "1.5" target = "1.5" debug = "true"
      deprecation = "false" optimize = "false" failonerror = "true">
      <src path = "${src.dir}"/>
      <classpath refid = "master-classpath"/>
   </javac>
</target>

L'esecuzione di Ant su questo file compila i file sorgente java e inserisce le classi nella cartella build.

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

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

BUILD SUCCESSFUL
Total time: 6.3 seconds

I file vengono compilati e inseriti nel file build.dir cartella.