Ant - Tipi di dati

Ant fornisce una serie di tipi di dati predefiniti. Non confondere il termine "tipi di dati" con quelli disponibili nel linguaggio di programmazione, considerali invece come un insieme di servizi già integrati nel prodotto.

I seguenti tipi di dati sono forniti da Apache Ant.

Set di file

I tipi di dati del set di file rappresentano una raccolta di file. Viene utilizzato come filtro per includere o escludere file che corrispondono a un modello particolare.

Ad esempio, fare riferimento al codice seguente. Qui, l'attributo src punta alla cartella di origine del progetto.

Il set di file seleziona tutti i file .java nella cartella di origine tranne quelli che contengono la parola "Stub". Il filtro con distinzione tra maiuscole e minuscole viene applicato al set di file, il che significa che un file con il nome Samplestub.java non verrà escluso dal set di file.

<fileset dir = "${src}" casesensitive = "yes">
   <include name = "**/*.java"/>
   <exclude name = "**/*Stub*"/>
</fileset>

Set di pattern

Un set di pattern è un pattern che consente di filtrare facilmente file o cartelle in base a determinati pattern. I modelli possono essere creati utilizzando i seguenti meta caratteri:

  • ? - Corrisponde a un solo carattere.

  • * - Corrisponde a zero o molti caratteri.

  • ** - Corrisponde a zero o molte directory in modo ricorsivo.

Il seguente esempio illustra l'utilizzo di un set di pattern.

<patternset id = "java.files.without.stubs">
   <include name = "src/**/*.java"/>
   <exclude name = "src/**/*Stub*"/>
</patternset>

Il patternset può quindi essere riutilizzato con un set di file come segue:

<fileset dir = "${src}" casesensitive = "yes">
   <patternset refid = "java.files.without.stubs"/>
</fileset>

Elenco dei file

Il tipo di dati dell'elenco di file è simile al set di file tranne le seguenti differenze:

  • filelist contiene elenchi di file con nomi espliciti e non supporta i caratteri jolly.

  • Il tipo di dati filelist può essere applicato a file esistenti o non esistenti.

Vediamo il seguente esempio del tipo di dati filelist. Qui, l'attributowebapp.src.folder punta alla cartella di origine dell'applicazione Web del progetto.

<filelist id = "config.files" dir = "${webapp.src.folder}">
   <file name = "applicationConfig.xml"/>
   <file name = "faces-config.xml"/>
   <file name = "web.xml"/>
   <file name = "portlet.xml"/>
</filelist>

Set di filtri

Utilizzando un tipo di dati del set di filtri insieme all'attività di copia, è possibile sostituire un determinato testo in tutti i file che corrisponde al modello con un valore di sostituzione.

Un esempio comune consiste nell'aggiungere il numero di versione al file delle note sulla versione, come mostrato nel codice seguente.

<copy todir = "${output.dir}">
   <fileset dir = "${releasenotes.dir}" includes = "**/*.txt"/>
   
   <filterset>
      <filter token = "VERSION" value = "${current.version}"/>
   </filterset>
</copy>

In questo codice -

  • L'attributo output.dir punta alla cartella di output del progetto.

  • L'attributo releasenotes.dir punta alla cartella delle note di rilascio del progetto.

  • L'attributo current.version punta alla cartella della versione corrente del progetto.

  • L'attività di copia, come suggerisce il nome, viene utilizzata per copiare i file da una posizione a un'altra.

Sentiero

Il pathil tipo di dati è comunemente usato per rappresentare un percorso di classe. Le voci nel percorso vengono separate mediante punto e virgola o due punti. Tuttavia, questi caratteri vengono sostituiti in fase di esecuzione dal carattere separatore di percorso del sistema in esecuzione.

Il classpath è impostato sull'elenco di file jar e classi nel progetto, come mostrato nell'esempio seguente.

<path id = "build.classpath.jar">
   <pathelement path = "${env.J2EE_HOME}/${j2ee.jar}"/>
   
   <fileset dir = "lib">
      <include name = "**/*.jar"/>
   </fileset>
</path>

In questo codice -

  • L'attributo env.J2EE_HOME punta alla variabile d'ambiente J2EE_HOME.

  • L'attributo j2ee.jar punta al nome del file jar J2EE nella cartella di base J2EE.