<?xml version="1.0" encoding="UTF-8"?>
<project name="porQual" default="build" basedir=".">
<property name="app.name" value="porqual"/>
<property name="app.home" value="."/>
<property name="src.home" value="${app.home}/src"/>
<property name="i18n.home" value="${src.home}/i18n"/>
<property name="testproperties.home" value="${app.home}/test"/>
<property name="test.home" value="${app.home}/test/src"/>
<property name="deploy.home" value="${app.home}/docroot"/>
<property name="deploy.classes" value="${deploy.home}/WEB-INF/classes"/>
<property name="deploy.i18n" value="${deploy.classes}/i18n"/>
<property name="deploy.libdir" value="${deploy.home}/WEB-INF/lib"/>
<property name="dist.home" value="${app.home}/build"/>
<property name="dist.jar" value="${app.name}.jar"/>
<property name="dist.war" value="${app.name}.war"/>
<property name="doc.home" value="${app.home}/doc"/>
<property name="javadoc.home" value="${doc.home}/javadoc"/>
<!-- Las rutas a flash.classes y asdoc.home hardcodeadas en tarea asdoc -->
<property name="as2api.home" value="${app.home}/extras/as2api"/>
<property name="flash.classes" value="src/flash/classes"/>
<property name="asdoc.home" value="${doc.home}/asdoc"/>
<property name="testreports.dir" value="${doc.home}/test"/>
<property name="app.libdir" value="${app.home}/lib"/>
<property name="compiler.source" value="1.5"/>
<property name="compiler.target" value="1.5"/>
<property name="app.config" value="${app.home}/porqualConfig.xml" />
<!-- FCKEditor -->
<property name="fck.file" value="fck.tgz" />
<property name="fck.compressed" value="${src.home}/www/common/${fck.file}" />
<property name="fck.destinationdir" value="${deploy.home}/common" />
<!-- JSPc -->
<property name="src.jspc.home" value="${deploy.home}/WEB-INF/jspc-src" /><!-- webapp.path -->
<property name="src.jsp.home" value="${src.home}/www" />
<property name='temp.mapping.file' value="${deploy.home}/WEB-INF/servlet-mapping.xml" />
<!-- Borra todo el deployment -->
<target name="clean">
<echo message="------> Eliminando todos los ficheros previos <------"/>
<delete includeEmptyDirs="true" failonerror="false">
<fileset dir="${deploy.home}" followsymlinks="false">
<!-- Se excluye app porque en Windows no se reconocen correctamente los enlaces -->
<exclude name="app/**"/>
<!-- Se excluyen los datos -->
<exclude name="WEB-INF/data/**"/>
</fileset>
</delete>
<delete includeEmptyDirs="true" failonerror="false">
<fileset dir="${dist.home}" />
</delete>
<delete includeEmptyDirs="true" failonerror="false">
<fileset dir="${javadoc.home}" />
<fileset dir="${asdoc.home}" />
<fileset dir="${testreports.dir}" />
</delete>
</target>
<!-- Crea la estructura de directorios de la aplicacion, copia .jsp/.jar y descomprime FCKEditor -->
<target name="prepare">
<echo message="------> Preparando ambiente de ejecucion <------"/>
<mkdir dir="${dist.home}"/>
<mkdir dir="${deploy.home}"/>
<mkdir dir="${deploy.classes}"/>
<mkdir dir="${deploy.i18n}"/>
<mkdir dir="${deploy.libdir}"/>
<mkdir dir="${doc.home}"/>
<mkdir dir="${javadoc.home}"/>
<mkdir dir="${asdoc.home}"/>
<mkdir dir="${testreports.dir}"/>
<!-- copia de ficheros -->
<echo message="------> Copiando ficheros www <------"/>
<copy todir="${deploy.home}" overwrite="no" includeEmptyDirs="no" preservelastmodified="yes">
<fileset dir="${src.home}/www">
<exclude name="**/*${fck.file}" />
<exclude name="**/*.java" />
<exclude name="**/*.svn" />
<exclude name="**/*.fla" />
<exclude name="**/WEB-INF/data/**" />
<!-- <exclude name="**/*Test*"/> -->
</fileset>
</copy>
<echo message="------> Copiando librerias <------"/>
<copy todir="${deploy.libdir}" overwrite="yes">
<fileset dir="${app.libdir}">
<include name="*.jar" />
<exclude name="**/docmanRealm*" />
<exclude name="**/servlet-api*" />
<exclude name="**/jsp-api*" />
<exclude name="**/sesame*" />
<exclude name="**/openrdf-model*" />
<exclude name="**/openrdf-util*" />
<exclude name="**/rio*" />
<exclude name="**/commons-fileupload*" />
<exclude name="**/commons-io*" />
<exclude name="**/checkstyle*" />
<!-- <exclude name="**/junit*" />
<exclude name="httpunit.jar"/>
<exclude name="js.jar"/>
<exclude name="nekohtml.jar"/>
<exclude name="Tidy.jar"/>
<exclude name="xmlParserAPIs.jar"/> -->
</fileset>
</copy>
<!-- copia con sobreescritura de los ficheros de configuracion -->
<echo message="------> Copiando ficheros de configuracion <------"/>
<copy file="${src.home}/www/WEB-INF/web.xml" tofile="${deploy.home}/WEB-INF/web.xml" overwrite="yes" verbose="no"/>
<copy file="${src.home}/www/WEB-INF/oscache.properties" tofile="${deploy.home}/WEB-INF/oscache.properties" overwrite="yes" verbose="no"/>
<copy file="${src.home}/www/WEB-INF/oscachedocman.properties" tofile="${deploy.home}/WEB-INF/oscachedocman.properties" overwrite="yes" verbose="no"/>
<copy file="${src.home}/www/WEB-INF/log4j.xml" tofile="${deploy.home}/WEB-INF/log4j.xml" overwrite="yes" verbose="no"/>
<copy file="${src.home}/www/META-INF/context.xml" tofile="${deploy.home}/META-INF/context.xml" overwrite="yes" verbose="no"/>
<!-- Internacionalización -->
<copy todir="${deploy.i18n}">
<fileset dir="${i18n.home}" />
</copy>
<!-- descompresión de fck -->
<echo message="------> Descomprimiendo fck.tgz <------"/>
<untar src="${fck.compressed}" dest="${fck.destinationdir}" compression="gzip" />
<!-- jspcPrepare -->
<echo message="------> Preparacion del ambiente de compilacion jsp <------"/>
<mkdir dir="${src.jspc.home}"/>
<mkdir dir="${src.jspc.home}/org/apache/jsp"/>
<mkdir dir="${deploy.classes}/org/apache/jsp"/>
<delete>
<fileset dir="${src.jspc.home}/org/apache/jsp" includes="*.java"/>
</delete>
<delete>
<fileset dir="${deploy.classes}/org/apache/jsp" includes="*.class"/>
</delete>
</target>
<!-- Ajusta la configuracion -->
<target name="configure" depends="prepare">
<echo message="------> Ajustando la configuracion <------"/>
<xmlproperty file="${app.config}" />
<replace file="${deploy.home}/WEB-INF/web.xml">
<replacefilter
token="@@homePageDocument@@"
value="${config.webApp.homePageDocument}" />
<replacefilter
token="@@cacheTime@@"
value="${config.webApp.cacheTime}" />
<replacefilter
token="@@docmanUser@@"
value="${config.webApp.docmanUser}" />
<replacefilter
token="@@docmanPass@@"
value="${config.webApp.docmanPass}" />
<replacefilter
token="@@sendInscriptions@@"
value="${config.inscriptions.sendInscriptions}" />
<replacefilter
token="@@eleUserManagerUrl@@"
value="${config.inscriptions.eleUserManagerUrl}"/>
</replace>
<replace file="${deploy.home}/WEB-INF/docmanConfig.xml">
<replacefilter
token="@@docStoragePath@@"
value="${config.docmanConfig.docStoragePath}" />
<replacefilter
token="@@docroot@@"
value="${config.docmanConfig.docroot}" />
<replacefilter
token="@@url@@"
value="${config.docmanConfig.sesameUrl}" />
<replacefilter
token="@@repName@@"
value="${config.docmanConfig.repName}" />
<replacefilter
token="@@user@@"
value="${config.docmanConfig.user}" />
<replacefilter
token="@@pass@@"
value="${config.docmanConfig.pass}" />
<replacefilter
token="@@configFile@@"
value="${config.docmanConfig.sesameConfigFile}" />
<replacefilter
token="@@local@@"
value="${config.docmanConfig.local}" />
</replace>
<replace file="${deploy.home}/WEB-INF/oscache.properties">
<replacefilter
token="@@path@@"
value="${config.cachePath}" />
</replace>
<replace file="${deploy.home}/WEB-INF/oscachedocman.properties">
<replacefilter
token="@@path@@"
value="${config.cachePath}" />
</replace>
<replace file="${deploy.home}/WEB-INF/log4j.xml">
<replacefilter
token="@@logFile@@"
value="${config.log4j.logFile}" />
<replacefilter
token="@@logLevel@@"
value="${config.log4j.logLevel}" />
<replacefilter
token="@@docmanLogLevel@@"
value="${config.log4j.docmanLogLevel}" />
</replace>
<replace file="${deploy.home}/META-INF/context.xml">
<replacefilter
token="@@url@@"
value="${config.docmanConfig.sesameUrl}" />
<replacefilter
token="@@repName@@"
value="${config.docmanConfig.repName}" />
<replacefilter
token="@@user@@"
value="${config.docmanConfig.user}" />
<replacefilter
token="@@pass@@"
value="${config.docmanConfig.pass}" />
<replacefilter
token="@@configFile@@"
value="${config.docmanConfig.sesameConfigFile}" />
<replacefilter
token="@@local@@"
value="${config.docmanConfig.local}" />
</replace>
<!-- Si se usa el fichero de configuracion de sesame por defecto, se activa el path: -->
<replace file="${deploy.home}/WEB-INF/sesameSystem.conf">
<replacefilter
token="@@repName@@"
value="${config.docmanConfig.repName}" />
<replacefilter
token="@@pass@@"
value="${config.docmanConfig.pass}" />
</replace>
</target>
<!-- Compila los .java -->
<target name="javac" depends="configure">
<echo message="------> Compilando fuentes .java <------"/>
<javac srcdir="${src.home}/java:${test.home}" destdir="${deploy.classes}"
source="${compiler.source}" target="${compiler.target}" debug="on" optimize="off"
deprecation="off" verbose="false" failonerror="true"
encoding="UTF-8" includes="**/*.java">
<classpath id="classpath">
<fileset dir="${app.libdir}">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
<target name="build" depends="javac,jspc"/>
<!-- jUnit tests -->
<target name="test" depends="build">
<echo message="------> Pruebas unitarias con JUnit <------"/>
<junit printsummary="on" fork="true">
<formatter type="plain"/>
<batchtest todir="${testreports.dir}">
<fileset dir="${test.home}">
<include name="**/*Test.java" />
</fileset>
</batchtest>
<classpath id="classpath">
<fileset dir="${deploy.libdir}">
<include name="*.jar"/>
</fileset>
<pathelement location="${deploy.classes}" />
</classpath>
</junit>
</target>
<!--
Este target necesita recibir como parametro el test a ejecutr; se invoca asi:
> ant oneTest -DtestName=com.yubarta.docman.impl.ResManInplTest
-->
<target name="oneTest" depends="build">
<echo message="------> Una prueba unitaria con JUnit <------"/>
<junit failureProperty="test.failure" showoutput="true" fork="yes">
<classpath id="classpath">
<fileset dir="${deploy.libdir}">
<include name="*.jar"/>
</fileset>
<fileset dir="lib">
<include name="*.jar"/>
</fileset>
<pathelement location="${deploy.classes}" />
</classpath>
<formatter type="brief" usefile="false" />
<test name="${testName}" /> <!-- por ejemplo: utils.FlashParserTest" -->
</junit>
<fail message="test failed" if="test.failure" />
</target>
<taskdef resource="checkstyletask.properties"
classpath="${app.libdir}/checkstyle-all-4.1.jar"/>
<!--
Este target analiza todo el código para ver si cumple las convenciones
-->
<target name="checkStyle"
description="Generates a report of code convention violations.">
<echo message="------> Analisis del codigo con Checkstyle <------"/>
<checkstyle config="${testproperties.home}/porqualChecks.xml"
failureProperty="checkstyle.failure"
failOnViolation="false">
<fileset dir="${src.home}/java" includes="**/*.java"/>
<!--<formatter type="plain"/>-->
<formatter type="xml" toFile="${testreports.dir}/checkstyle_errors.xml"/>
</checkstyle>
</target>
<!--
Este target analiza el código de una sola clase que es la que recibe como parámetro. Se invoca:
> ant oneCheck -DcheckFile=java/org/porqual/editor/DocManager.java
-->
<target name="oneCheck"
description="Generates a report of code convention violations.">
<echo message="------> Analisis del codigo con Checkstyle <------"/>
<checkstyle config="${testproperties.home}/porqualChecks.xml"
failureProperty="checkstyle.failure"
failOnViolation="false">
<fileset dir="${src.home}" includes="${checkFile}"/>
<!--<fileset file="${src.home}/$checkFile"/>-->
<!--<formatter type="plain"/>-->
<formatter type="xml" toFile="${testreports.dir}/checkstyle_errors.xml"/>
</checkstyle>
</target>
<!-- crea el javadoc -->
<target name="javadoc" depends="build">
<echo message="------> Generando documentacion java <------"/>
<javadoc
packagenames="org.porqual.*"
sourcepath="${src.home}/java"
destdir="${javadoc.home}">
<classpath id="classpath">
<fileset dir="${app.libdir}">
<include name="*.jar"/>
</fileset>
</classpath>
</javadoc>
</target>
<!-- crea el asdoc -->
<target name="asdoc" depends="prepare">
<echo message="------> Generando documentacion Actionscript <------"/>
<exec dir="${as2api.home}" executable="ruby">
<arg line="as2api.rb" />
<arg line="--classpath ../../${flash.classes}" />
<arg line="--output-dir ../../${asdoc.home}" />
<arg line="com.* org.* util.*" />
</exec>
<copy file="${asdoc.home}/frameset.html" tofile="${asdoc.home}/index.html" />
</target>
<!-- Crea los archivos de la aplicación -->
<target name="dist" depends="build">
<echo message="------> Generando distribucion de la aplicacion <------"/>
<jar destfile="${dist.home}/${dist.jar}"
basedir="${deploy.classes}"/>
<war destfile="${dist.home}/${dist.war}"
webxml="${deploy.home}/WEB-INF/web.xml"
basedir="${deploy.home}" />
</target>
<!-- INICIO JSPc -->
<!-- transformacion jsp/servlet con jasper -->
<target name="jspcJasper" depends="">
<echo message="------> Transformacion de ficheros jsp a fuentes servlet <------"/>
<xmlproperty file="${app.config}" />
<taskdef classname="org.apache.jasper.JspC" name="jasper2" >
<classpath id="deploy.classes">
<pathelement location="${java.home}/../lib/tools.jar"/>
<pathelement location="${deploy.classes}"/>
<fileset dir="${deploy.libdir}">
<include name="*.jar"/>
</fileset>
<fileset dir="${config.tomcat.home}/bin">
<include name="*.jar"/>
</fileset>
<fileset dir="${config.tomcat.home}/server/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${config.tomcat.home}/common/lib">
<include name="*.jar"/>
</fileset>
</classpath>
</taskdef>
<jasper2 validateXml="false" webXml="${deploy.home}/WEB-INF/web.xml" verbose="0"
addWebXmlMappings="true" javaEncoding="UTF-8"
uriroot="${deploy.home}" outputDir="${src.jspc.home}"
webXmlFragment="${temp.mapping.file}" />
</target>
<!-- compilacion de los servlets generados -->
<target name="jspcServletCompile" depends="">
<echo message="------> Compilacion de servlets jsp <------"/>
<xmlproperty file="${app.config}" />
<javac destdir="${deploy.classes}" deprecation="off" optimize="off" debug="on"
failonerror="true" srcdir="${src.jspc.home}" includes="**/*.java"
excludes="**/*.smap" verbose="false" encoding="UTF-8">
<classpath>
<pathelement location="${deploy.classes}"/>
<fileset dir="${deploy.libdir}">
<include name="*.jar"/>
</fileset>
<pathelement location="${config.tomcat.home}/common/classes"/>
<fileset dir="${config.tomcat.home}/common/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${config.tomcat.home}/server/lib">
<include name="*.jar"/>
</fileset>
<pathelement location="${config.tomcat.home}/shared/classes"/>
<fileset dir="${config.tomcat.home}/shared/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${config.tomcat.home}/bin">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
<!-- pasos posteriores al porceso de compilacion -->
<target name="jspcFinalize">
<echo message="------> Mantenimiento final de la compilacion jsp <------"/>
<delete failonerror="false" followsymlinks="false">
<fileset dir="${deploy.home}">
<!-- Se excluye app porque en Windows no se reconocen correctamente los enlaces -->
<exclude name="app/**"/>
<include name="**/*.jsp"/>
</fileset>
</delete>
</target>
<!-- target por defecto -->
<target name="jspc" depends="configure,jspcJasper,jspcServletCompile"/><!-- ,jspcFinalize -->
<!-- FIN JSPc -->
<!-- Lo hacemos todo -->
<target name="all" depends="clean,build,test,javadoc,dist"/>
<!-- Fichero de definicion de casos de prueba -->
<import file="test/httpUnitTests.xml"/>
<!-- fichero externo con las pruebas unitarias http a realizar -->
<target name="testHttpPages">
<!-- Debe colocarse dentro de un target para dar tiempo a que se compile su clase -->
<taskdef classname="utils.HttpUnitTestPage" name="httpTest">
<classpath>
<pathelement location="${deploy.classes}" />
<fileset dir="${app.libdir}">
<include name="junit.jar"/>
<include name="xercesImpl.jar"/>
<include name="js.jar"/>
<include name="nekohtml.jar"/>
<include name="Tidy.jar"/>
<include name="xmlParserAPIs.jar"/>
<include name="httpunit.jar"/>
<!--include name="servlet.jar"/-->
</fileset>
</classpath>
</taskdef>
<!-- Casos de prueba definidos -->
<ant target="httpTestCases" />
</target>
</project>