Un introduzione a Java Ant per lutilizzo con Swarm Marco Lamieri 13/04/2004
Che cosè Ant Progetto Opensource sviluppato dallApache Group (prima versione il 19 Luglio 2000) Homepage A.N.T. - "Another Neat Tool Gestisce la compilazione, l'esecuzione e più in generale il processo di "build" delle applicazioni Java.
Vantaggi e svantaggi Vantaggi Indipendenza dalla piattaforma Estendibilità Integrazione Utilizzabile in simulazioni JavaSwarm senza integrazioni al pacchetto base Svantaggi Necessità di installare un software aggiuntivo Necessità di dichiarare nuove variabili d'ambiente Utilizzabile solo per programmi Java Non standard come make
Installazione Scaricare la distribuzione aggiornata (1.6) da Decomprimere il contenuto in C:\Programmi\ant Impostare le variabili dambiente: JAVA_HOME=C:\j2sdk1.4.2 ANT_HOME=C:\Programmi\ant PATH=… ; %ANT_HOME%\bin
Utilizzo di Ant Costruire il file build.xml Eseguire da shell (Cygwin, dos, linux..): ant [options] [targets...] -? per ottenere l'help; -v per ottenere l'output verbose -f per specificare il nome del file di build -Dname=value per definire variabili -projecthelp per ottener elenco e descrizioni dei target
Preparazione del file build.xml Si tratta di un Makefile in XML Struttura ed elementi: Project (name, descriprion) Target (depends, if, description) Task (java, javac, delete, exec, …) Properties (basedir, file, java.version, personalizzate …) Un semplice buildfile …
simple example build file <target name="compile" depends="init" description="compile the source " >
<target name="compile" depends="init" description="compile the source " > <target name="dist" depends="compile" description="generate the distribution" > <target name="clean" description="clean up" >
Come integrare Swarm: gestione dei classpath Definire un unico classpath per tutto il progetto: Gestire un classpath per ogni target
Generare la documentazione con javadoc Un unico task che permette di personalizzare il risultato fino allhtml <javadoc packagenames="*" sourcepath="src" destdir="doc" classpath="${jar.classpath}" defaultexcludes="no author="true" version="true" use="true" package="true" windowtitle="ART - Artificial Reasoning Toolkit" Overview="./src/overview.html" Verbose="false"> ART - Artificial Reasoning Toolkit ]]>
Utilizzo di scripts Eseguire script esterni windows e linux utilizzando Interagire con altre applicazioni attraverso javascript propname = project.getProperty("anotherprop"); project.setNewProperty("prop", propname);
Gestire l'output di ant Inviare con il risultato dell'esecuzione: ant -logger org.apache.tools.ant.listener.MailLogger -propertyfile Salvare loutput del processo su file: ant -logfile
Gestire parametri da riga di comando Come costruire un target che … … chieda i parametri allutente … … e li passi alla simulazione o alla JVM.
Come estendere e personalizzare Ant Per aggiungere nuove funzionalità scrivendo utilizzando codice java esistono due strade: Implementare BuildListener: per descrivere funzionalità eseguite in concomitanza ad eventi del processo di build. [ ant runChange -lib./ -listener MyBuildListener ] Aggiungere nuovi oggetti task: per descrivere funzionalità richiamabili dal build file come normali task. [ ant -lib./ newTask ]
Implementare BuildListener MyBuildListener.java import org.apache.tools.ant.*; public class MyBuildListener implements BuildListener { … public void taskStarted( BuildEvent event ){ event.getTask().log(event.getTask().getTaskName() + ": Task started..."); } public void taskFinished( BuildEvent event ) { event.getTask().log(event.getTask().getTaskName() + ": Task finished..."); } }
Aggiungere nuovi oggetti task NewTask.java import org.apache.tools.ant.*; public class NewTask extends Task { private String msg; public void execute() throws BuildException { System.out.println(msg); } public void setMessage(String str){ msg=str; } Build.xml …
Report 1 Domande ?