<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Questo buildfile e' stato creato da StM come supporto al proprio lavoro, e per fare pratica nell'utilizzo di Ant.
Questo buildfile e' distribuito "cosi' com'e'", senza garanzie di funzionamento, ma con la speranza di essere utile a
qualcuno. La modifica e la redistribuzione sono permesse, senza vincoli se non la richiesta cortese di mantenere un
riferimento al sito da cui questo file e' stato scaricato, ovvero http://stm.sottosuolo.org. -->
<project name="WebApplicationMakeAll" default="all" basedir=".">
	<description>Versione 1.0 - Automatizza la copia dei sorgenti, la loro compilazione, la creazione del pacchetto da mettere in produzione, e la creazione del javadoc.</description>
	
	<!-- Variabili -->
	<!-- Versione di Java che si intende utilizzare -->
	<property name="java_version" value="1.4"/>
	<!-- Quale tipo di accesso usare nella creazione della documentazione (public, protected, package, private) -->
	<property name="doc_access" value="protected"/>
	<!-- Il file contenente l'eventuale overview della javadoc. La compilazione si conclude anche se questo non e' specificato -->
	<property name="javadoc_overview" value="javadoc_overview.htm" />
	
	<!-- Parametri presi da file -->
	<!-- Dove si trovano i sorgenti java, ad esempio C:\Java\eclipse-progetti (workspace di eclipse) -->
	<loadfile property="local_java_sources" srcFile="..\ant_path_java_sources_root.txt"/>
	<!-- Dove si trovano i .jar dell'implementazione j2ee usata, esempio C:\Java\Tomcat 5.5\common\lib-->
	<loadfile property="j2ee_libs" srcFile="../ant_path_j2ee_libs.txt"/>
	<!-- Il nome che si e' dato al progetto nel workspace (importante che sia quello della cartella) -->
	<loadfile property="project_name" srcFile="ant_name_of_project.txt"/>
	
	<!-- Posizione delle varie cartelle del progetto, estrapolate dai parametri precedenti -->
	<property name="src" location="${local_java_sources}\${project_name}" />
	<property name="srcweb" location="${src}\WebContent" />
	<property name="srclibs" location="${srcweb}\WEB-INF\lib" />
	
	<!-- Sottocartelle di output -->
	<property name="srcmirror" location="${project_name}Source" />
	<property name="build" location="${project_name}Build" />
	<property name="deployable" location="${project_name}" />
	<property name="doc" location="${project_name}Doc" />

	<!-- Il nome del file contenente il numero di build (che verra' copiato nel jar) -->
	<property name="build.number.file" value="_build" />
	
	<!-- SOTTO QUESTA RIGA NON DOVREBBE ESSERE NECESSARIO MODIFICARE NULLA -->
	
	<!-- Classpath -->
	<path id="project_classpath">
		<pathelement path="${classpath}"/>
		<fileset dir="${srclibs}">
			<include name="**/*.jar"/>
		</fileset>
		<fileset dir="${j2ee_libs}">
			<include name="**/*.jar"/>
		</fileset>
	</path>
	
	<!-- Porzione per la sincronizzazione dei sorgenti -->
	
	<target name="dirsrcsync">
		<mkdir dir="${srcmirror}" />
	</target>
	
	<target name="srcsync" depends="dirsrcsync">
		<sync todir="${srcmirror}">
			<fileset dir="${src}/src">
				<exclude name=".*/**" />
			</fileset>
		</sync>
	</target>
	
	<!-- Porzione per la compilazione dei sorgenti -->
	
	<target name="dirbuild">
		<mkdir dir="${build}" />
	</target>
	
	<target name="dirbuildclean">
		<delete>
			<fileset dir="${build}">
				<include name="**/*" />
			</fileset>
		</delete>
	</target>
	
	<target name="build" depends="srcsync,dirbuild,dirbuildclean">
		<javac 	srcdir="${srcmirror}"
				destdir="${build}"
				source="${java_version}"
				target="${java_version}">
			<classpath refid="project_classpath" />
		</javac>
		<buildnumber file="${build.number.file}" />
		<copy file="${build.number.file}" todir="${build}" />
	</target>
	
	<!-- Porzione per la creazione del pacchetto eventualmente utilizzabile in produzione -->
	
	<target name="dirdeployable">
		<mkdir dir="${deployable}" />
	</target>
	
	<target name="deployable" depends="build,dirdeployable">
		<sync todir="${deployable}">
			<fileset dir="${src}/WebContent/">
				<exclude name=".*/**" />
			</fileset>
		</sync>
		<jar destfile="${deployable}\WEB-INF\lib\${project_name}.jar" basedir="${build}" />
	</target>
	
	<!-- Porzione per la creazione della documentazione -->
	
	<target name="dirdoc">
		<mkdir dir="${doc}" />
	</target>
	
	<target name="dirdocclean">
		<delete>
			<fileset dir="${doc}">
				<include name="**/*" />
			</fileset>
		</delete>
	</target>
	
	<target name="doc" depends="srcsync,dirdoc,dirdocclean">
		<javadoc access="${doc_access}" author="true" destdir="${doc}" doctitle="${project_name}" nodeprecated="false" nodeprecatedlist="false" noindex="false" nonavbar="false" notree="false" packagenames="*" source="${java_version}" sourcepath="${srcmirror}" classpathref="project_classpath" splitindex="true" use="true" version="true" Overview="${javadoc_overview}" />
	</target>
	
	<!-- Azione di default (dipendente da tutte le precedenti) -->
	
	<target name="all" depends="deployable,doc" />
</project>
