<?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="GenericApplicationMakeAll" 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"/>
	<!-- 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="srclibs" location="${src}\lib" value="${src}\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 -->
	<available property="hasLibs" file="${srclibs}" type="dir" />
	
	<!-- Classpath -->
	
	<target name="classpath_libs" if="hasLibs">
		<path id="project_classpath">
			<pathelement path="${classpath}"/>
			<fileset dir="${srclibs}">
				<include name="**/*.jar"/>
			</fileset>
		</path>
	</target>
	
	<target name="classpath_nolibs" unless="hasLibs">
		<path id="project_classpath">
			<pathelement path="${classpath}"/>
		</path>
	</target>
	
	<target name="classpath" depends="classpath_libs,classpath_nolibs" />
	
	<!-- Porzione per la sincronizzazione dei sorgenti -->
	
	<target name="dirsrcsync">
		<mkdir dir="${srcmirror}" />
	</target>
	
	<target name="srcsync" depends="dirsrcsync">
		<sync todir="${srcmirror}">
			<fileset dir="${src}">
				<include name="**/*.java" />
			</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,classpath">
		<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}" />
		<mkdir dir="${deployable}\lib" />
	</target>
	
	<target name="deployable_libs" if="hasLibs">
		<sync todir="${deployable}\lib">
			<fileset dir="${srclibs}" />
		</sync>
	</target>
	
	<target name="deployable" depends="build,dirdeployable,deployable_libs">
		<jar destfile="${deployable}\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,classpath">
		<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>

