blob: 567087b2b48d275ebaf4f4c69d7e6d535a0dfda5 [file] [log] [blame]
<?xml version="1.0"?>
<!DOCTYPE project [
<!ENTITY properties SYSTEM "properties.xmlf">
<!ENTITY custom-gen-web SYSTEM "custom/custom-gen-web.xmlf">
<!ENTITY custom-gen-beans SYSTEM "custom/custom-gen-beans.xmlf">
<!ENTITY custom-jars SYSTEM "custom/custom-jars.xmlf">
<!ENTITY custom-src-beans SYSTEM "custom/custom-src-beans.xmlf">
<!ENTITY custom-src-web SYSTEM "custom/custom-src-web.xmlf">
<!ENTITY custom-src-tests SYSTEM "custom/custom-src-tests.xmlf">
<!ENTITY custom-web SYSTEM "custom/custom-web.xmlf">
<!ENTITY custom-dbscripts SYSTEM "custom/custom-dbscripts.xmlf">
<!ENTITY custom-pre-dbtest SYSTEM "custom/custom-pre-dbtest.xmlf">
<!ENTITY custom-post-dbtest SYSTEM "custom/custom-post-dbtest.xmlf">
<!ENTITY custom-ant SYSTEM "custom/custom-ant.xmlf">
]>
<!-- ********************************************************************* -->
<!-- Ant build script for Roller main branch -->
<!-- Author: David M Johnson -->
<!-- ********************************************************************* -->
<project name="roller" default="usage">
<!-- Bring in properties.xml -->
&properties;
<!-- Bring in custom properties and targets -->
&custom-ant;
<target name="usage" description="Print usage for key targets">
<echo>
Key Targets:
all - Build all: gen code, compile code, stage web directory
build - Same as 'all' but no code gen
javadoc - Run javadoc against (generated) code
clean - Blow away all generated code and all byte code
rebuild - Clean and build all
usage - Print this help text...
</echo>
</target>
<!-- ================================================ -->
<!-- Meta targets -->
<!-- ================================================ -->
<target name="all" depends="generate,stage-web" description="Build all">
</target>
<target name="build" depends="stage-web" description="Compile only, no code generation">
</target>
<target name="rebuild" depends="clean,all" description="Clean and build all">
</target>
<target name="clean" description="Clean out build directory">
<delete dir="./build"/>
</target>
<!-- ********************************************************************* -->
<!-- XDoclet code generation -->
<!-- ********************************************************************* -->
<target name="generate" depends="gen-forms,gen-hibernate,gen-web,gen-wrappers" >
</target>
<!-- ============================================== -->
<!-- generate Struts forms -->
<target name="gen-forms" description="XDoclet generate form beans">
<!-- Define the XDoclet xdoclet task -->
<taskdef name="ejbdoclet" classname="xdoclet.modules.ejb.EjbDocletTask"
classpathref="xdoclet.path" />
<mkdir dir="${build.generated}/src.presentation"/>
<mkdir dir="${build.generated}/src.business"/>
<mkdir dir="${build.generated}/META-INF"/>
<mkdir dir="${ro.build}/junk"/>
<!-- Use EJBDoclet to generate Struts forms -->
<ejbdoclet destdir="${build.generated}/src" excludedtags="@version,@author">
<fileset dir="./src" includes="org/roller/pojos/WeblogTemplate.java" />
<fileset dir="./src" includes="org/roller/pojos/*Data.java" />
<fileset dir="./src" includes="org/roller/business/*Data.java" />
&custom-gen-web;
<!-- Generate Struts forms -->
<strutsform destdir="${build.generated}/src.presentation"
prefixWithPackageStructure="no"
templateFile="./metadata/xdoclet/struts_form.xdt">
<!-- into the org.roller.presentation.forms package -->
<packageSubstitution packages="pojos"
substituteWith="presentation.forms"/>
<packageSubstitution packages="presentation"
substituteWith="presentation.forms"/>
</strutsform>
<!-- We are not actually generating data objects, but using the
dataobject subtask allows the strutsform subtask to add nice
Adds nice constructors and setData methods to Struts forms -->
<dataobject destdir="${ro.build}/junk" pattern="{0}" />
</ejbdoclet>
<copy todir="./personal/testing">
<fileset dir="${build.generated}" includes="mapping.xml"/>
</copy>
<!-- Change Struts form names from *DataForm.java to *Form.java -->
<replace dir="${build.generated}/src.presentation/org/roller/presentation/forms"
token="DataForm" value="Form"/>
<move todir="${build.generated}/src.presentation/org/roller/presentation/forms">
<fileset dir="${build.generated}/src.presentation/org/roller/presentation/forms" >
<include name="*DataForm.java"/>
<include name="*ConfigForm.java" />
</fileset>
<mapper type="glob" from="*DataForm.java" to="*Form.java"/>
</move>
</target>
<!-- ============================================== -->
<!-- generate Hibernate mappings -->
<target name="gen-hibernate" description="XDoclet Generate Hibernate mappings">
<taskdef name="hibernatedoclet"
classname="xdoclet.modules.hibernate.HibernateDocletTask"
classpathref="xdoclet.path" />
<!-- generate hibernate files -->
<hibernatedoclet
destdir="${build.compile_beans}"
mergedir="./metadata/xdoclet"
excludedtags="@version,@author"
addedtags="@xdoclet-generated at ${TODAY}"
force="true">
<fileset dir="./src" includes="org/roller/pojos/WeblogTemplate.java" />
<fileset dir="./src" includes="org/roller/pojos/*Data.java" />
<fileset dir="./src" includes="org/roller/pojos/*Assoc.java" />
<fileset dir="./src" includes="org/roller/business/*Data.java" />
&custom-gen-beans;
<hibernate validatexml="true" version="2.0"/>
</hibernatedoclet>
<replace dir="${build.compile_beans}/org/roller/pojos"
token="Hibernate Mapping DTD 2.0//EN"
value="Hibernate Mapping DTD 3.0//EN"/>
<replace dir="${build.compile_beans}/org/roller/pojos"
token="hibernate-mapping-2.0.dtd"
value="hibernate-mapping-3.0.dtd"/>
<replace dir="${build.compile_beans}/org/roller/business"
token="Hibernate Mapping DTD 2.0//EN"
value="Hibernate Mapping DTD 3.0//EN"/>
<replace dir="${build.compile_beans}/org/roller/business"
token="hibernate-mapping-2.0.dtd"
value="hibernate-mapping-3.0.dtd"/>
</target>
<!-- ============================================== -->
<!-- Generate web deployment descriptors -->
<target name="gen-web" description="XDoclet generate web depoyment descriptors">
<!-- Define the XDoclet webdoclet task -->
<taskdef name="webdoclet" classname="xdoclet.modules.web.WebDocletTask"
classpathref="xdoclet.path" />
<!-- Use WebDoclet to web.xml, struts-config.xml, and TLDs -->
<mkdir dir="${build.stage_web}/WEB-INF"/>
<mkdir dir="${build.compile_web}/META-INF/tlds"/>
<webdoclet force="true"
destdir="${build.stage_web}/WEB-INF"
mergedir="./metadata/xdoclet"
excludedtags="@version,@author">
<fileset dir="./src">
<!-- Speed up XDoclet by limiting number of files it has to process -->
<include name="**/*Action.java" />
<include name="**/*Filter.java" />
<include name="**/*Form.java" />
<include name="**/*FormEx.java" />
<include name="**/*Servlet.java" />
<include name="**/*Tag.java" />
<include name="org/roller/presentation/**/actions/*.java" />
<include name="org/roller/presentation/RollerContext.java" />
<include name="org/roller/presentation/RollerSession.java" />
<exclude name="**/IPBanFilter**" />
<exclude name="**/LinkTag**" />
<exclude name="**/LinkParamTag**" />
</fileset>
<fileset dir="${build.generated}/src.presentation">
<include name="**/*Form.java" />
</fileset>
&custom-gen-web;
<deploymentdescriptor servletspec="2.3"
destdir="${build.stage_web}/WEB-INF"
sessiontimeout="30"
displayname="Roller Weblogger">
</deploymentdescriptor>
<jsptaglib jspversion="1.2" filename="roller.tld" shortname="roller"
uri="http://www.rollerweblogger.org/tags"
destdir="${build.compile_web}/META-INF/tlds"/>
<strutsconfigxml destdir="${build.stage_web}/WEB-INF"
validatexml="true" mergedir="./metadata/xdoclet" version="1.1" />
<strutsvalidationxml/>
</webdoclet>
</target>
<!-- ============================================== -->
<!-- Generate pojo wrappers -->
<target name="gen-wrappers" description="XDoclet generate pojo wrappers">
<!-- Define the XDoclet task -->
<taskdef name="xdoclet" classname="xdoclet.DocletTask"
classpathref="xdoclet.path" />
<xdoclet destdir="${build.generated}/src.business">
<packageSubstitution packages="pojos" substituteWith="pojos.wrapper"/>
<fileset dir="./src">
<!--
it may be easier to glob using *Data.java at some point, but
for now that will generate a lot of unneeded classes.
maybe we can extend the process to only wrap classes that have
methods tagged with @roller.wrapPojoMethod ??
-->
<include name="org/roller/pojos/BookmarkData.java"/>
<include name="org/roller/pojos/CommentData.java"/>
<include name="org/roller/pojos/EntryAttributeData.java"/>
<include name="org/roller/pojos/FolderData.java"/>
<include name="org/roller/pojos/RefererData.java"/>
<include name="org/roller/pojos/Template.java"/>
<include name="org/roller/pojos/UserData.java"/>
<include name="org/roller/pojos/WeblogEntryData.java"/>
<include name="org/roller/pojos/WeblogCategoryData.java"/>
<include name="org/roller/pojos/WebsiteData.java"/>
</fileset>
<template
destinationFile="{0}Wrapper.java"
templateFile="metadata/xdoclet/pojo_wrapper.xdt"
subTaskName="Pojo Wrappers" />
</xdoclet>
</target>
<!-- ********************************************************************* -->
<!-- Compile and jar Business Tier classes -->
<!-- ********************************************************************* -->
<target name="build-beans">
<mkdir dir="${ro.build}/lib"/>
<mkdir dir="${build.compile_beans}"/>
<tstamp>
<format property="ro.buildTime" pattern="yyyyMMddhhmmss" />
</tstamp>
<echo file="${build.compile_beans}/version.properties">
ro.version=${ro.version}
ro.buildTime=${ro.buildTime}
ro.buildUser=${user.name}
</echo>
<javac debug="${build.debug}" destdir="${build.compile_beans}"
excludes="org/roller/presentation/**" >
<src path="${basedir}/src" />
<src path="${build.generated}/src.business"/>
&custom-src-beans;
<classpath>
<path refid="business.path"/>
&custom-jars;
</classpath>
</javac>
<!-- Copy class resources -->
<copy todir="${build.compile_beans}/org/roller/model">
<fileset dir="${build.generated}/src.business" includes="*.hbm.xml"/>
</copy>
<!-- Jar up the beans -->
<jar basedir="${build.compile_beans}"
jarfile="${ro.build}/lib/rollerbeans.jar"/>
</target>
<!-- For versions of Resin before 2.1.9 we have to turn the
HttpServletResponseWrapper into a CauchoResponseWrapper. We have
to do away with the original or there will be compile errors. -->
<target name="prepare.resin" if="resinFilters">
<echo>Convert HttpServletResponseWrappers to CauchoResponseWrappers</echo>
<replace dir="./src"
token="extends HttpServletResponseWrapper"
value="extends com.caucho.http.filter.CauchoResponseWrapper" />
<replace file="${build.stage_web}/WEB-INF/web.xml"
token="&lt;!-- RESIN-CACHE --&gt;" >
<replacevalue><![CDATA[
<init-param>
<param-name>handler</param-name>
<param-value>CommonsPageCache</param-value>
</init-param>
]]></replacevalue>
</replace>
</target>
<!-- Now that the compilation is done, undo the damage from prepare.resin -->
<target name="undo.resin" if="resinFilters">
<echo>Convert CauchoResponseWrappers to HttpServletResponseWrappers</echo>
<replace dir="./src"
value="extends HttpServletResponseWrapper"
token="extends com.caucho.http.filter.CauchoResponseWrapper" />
</target>
<!-- ********************************************************************* -->
<!-- Compile and jar Presentation Tier classes -->
<!-- ********************************************************************* -->
<target name="build-web" depends="build-beans" >
<mkdir dir="${build.compile_web}"/>
<antcall target="prepare.resin" />
<javac debug="${build.debug}" destdir="${build.compile_web}"
includes="org/roller/presentation/**, org/roller/util/rome/**" >
<src path="./src" />
<src path="${build.generated}/src.presentation"/>
&custom-src-web;
<classpath>
<path refid="presentation.path"/>
<path location="${build.compile_beans}"/>
&custom-jars;
</classpath>
</javac>
<copy todir="${build.compile_web}">
<fileset dir="./src">
<include name="**/*.properties"/>
<include name="**/*.tpl"/>
<include name="**/*.vm"/>
</fileset>
</copy>
<!-- Generate and compile JSP files (just as an error checking measure)
<mkdir dir="${build.jspc}"/>
<path id="jspc.classpath">
<path refid="presentation.path"/>
<path location="${build.compile_beans}"/>
<path location="${build.compile_web}"/>
<path location="${ro.tools}/lib/ant-1.5.1.jar"/>
<path location="${ro.tools}/lib/ant-optional-1.5.1.jar"/>
<path location="${ro.tools}/lib/jasper-compiler.jar"/>
<path location="${ro.tools}/lib/jasper-runtime.jar"/>
</path>
<jspc srcdir="./web" destdir="${build.jspc}"
classpathref="jspc.classpath">
</jspc>
<javac srcdir="${build.jspc}" destdir="${build.jspc}"
classpathref="jspc.classpath">
</javac> -->
<antcall target="undo.resin" />
</target>
<!-- ********************************************************************* -->
<!-- Stage web resources: allows us to work on JSP's without restarts -->
<!-- ********************************************************************* -->
<target name="copy-web" description="Stage web app, without jars">
<!-- Copy web contents to staging, plus README files. -->
<copy todir="${build.stage_web}">
<fileset dir="./web">
<include name="**/*"/>
<exclude name="**/codewright*/**"/>
<exclude name="**/CVS/**"/>
<exclude name="**/*.bak"/>
<exclude name="**/*~"/>
<exclude name="**/berkley/**"/> <!-- not ready yet -->
</fileset>
<fileset dir=".">
<include name="README.txt"/>
<include name="LICENSE.txt"/>
<include name="CHANGES.txt"/>
</fileset>
</copy>
&custom-web;
</target>
<!-- ********************************************************************* -->
<!-- Stage web application -->
<!-- ********************************************************************* -->
<target name="stage-web" depends="build-web" description="Stage web app, including jars">
<mkdir dir="${build.stage_web}/resources"/>
<mkdir dir="${build.stage_web}/WEB-INF/lib"/>
<mkdir dir="${build.stage_web}/WEB-INF/tlds"/>
<!-- Jar up web classes -->
<jar jarfile="${build.stage_web}/WEB-INF/lib/rollerweb.jar">
<fileset dir="${build.compile_web}" excludes="**/tomcat/**"/>
</jar>
<!-- Copy database configs to classpath in staging -->
<copy todir="${build.stage_web}/WEB-INF/classes">
<fileset dir="./metadata/database/hibernate" includes="hibernate.cfg.xml"/>
<fileset dir="${ro.tools}/lib" includes="oscache.properties"/>
<!-- <fileset dir="${build.compile_web}" excludes="**/tomcat/**"/> -->
</copy>
<!-- Copy WEB-INF contents to staging -->
<copy todir="${build.stage_web}/WEB-INF">
<fileset dir="${build.generated}" includes="mapping.xml"/>
<fileset dir="${tools.struts}/lib" includes="validator-rules.xml"/>
</copy>
<!-- Copy other jars -->
<copy todir="${build.stage_web}/WEB-INF/lib">
<fileset dir="${ro.build}/lib" includes="rollerbeans.jar"/>
<fileset refid="base.jars" />
<fileset refid="presentation.jars" />
<fileset refid="hibernate.jar" />
<fileset refid="hibernate.jars" />
<fileset refid="commons.jars" />
<fileset refid="struts.jars" />
<fileset refid="jstl.jars" />
&custom-jars;
<fileset dir="${ro.tools}/lib">
<include name="mm.mysql-2.0.14-bin.jar" if="resinServer"/>
</fileset>
<fileset dir="${ro.tools}/buildtime">
<include name="xercesImpl-2.3.0.jar" if="resinServer"/>
<include name="xmlParserAPIs-2.3.0.jar" if="resinServer"/>
</fileset>
</copy>
<!-- Copy DTDs and TLDs -->
<copy todir="${build.stage_web}/WEB-INF/tlds">
<fileset dir="${ro.tools}/lib" includes="*.tld"/>
</copy>
<!-- copy database related files -->
<antcall target="stage-dbscripts" />
<!-- Copy web contents to staging, plus README files. -->
<antcall target="copy-web" />
<ant inheritAll="false" dir="contrib" />
</target>
<!-- ********************************************************************* -->
<!-- Create different versions of database setup script -->
<!-- With this approach we won't have to expand the script all the time. -->
<!-- ********************************************************************* -->
<target name="stage-dbscripts">
<property name="dbscripts" value="${build.stage_web}/WEB-INF/dbscripts"/>
<!-- Create database creation script directory -->
<mkdir dir="${dbscripts}"/>
<copy todir="${dbscripts}">
<fileset dir="./metadata/database" includes="droptables.sql"/>
<fileset dir="./metadata/database" includes="*.sh,*.bat,rollerdb.properties"/>
</copy>
<!-- MYSQL -->
<copy toDir="${dbscripts}/mysql">
&custom-dbscripts;
<fileset dir="./metadata/database">
<include name="*.sql" />
<exclude name="droptables.sql" />
</fileset>
<filterset>
<filtersfile file="./metadata/database/db_mysql.properties"/>
</filterset>
<mapper type="glob" from="*-raw.sql" to="*.sql" />
</copy>
<!-- POSTGRESQL -->
<copy toDir="${dbscripts}/postgresql">
&custom-dbscripts;
<fileset dir="./metadata/database">
<include name="*.sql" />
<exclude name="droptables.sql" />
</fileset>
<filterset>
<filtersfile file="./metadata/database/db_postgresql.properties"/>
</filterset>
<mapper type="glob" from="*-raw.sql" to="*.sql" />
</copy>
<!-- HSQL -->
<copy toDir="${dbscripts}/hsql">
&custom-dbscripts;
<fileset dir="./metadata/database">
<include name="*.sql" />
<exclude name="droptables.sql" />
</fileset>
<filterset>
<filtersfile file="./metadata/database/db_hsql.properties"/>
</filterset>
<mapper type="glob" from="*-raw.sql" to="*.sql" />
</copy>
<!-- DB2 -->
<copy toDir="${dbscripts}/db2">
&custom-dbscripts;
<fileset dir="./metadata/database">
<include name="*.sql" />
<exclude name="droptables.sql" />
</fileset>
<filterset>
<filtersfile file="./metadata/database/db_db2.properties"/>
</filterset>
<mapper type="glob" from="*-raw.sql" to="*.sql" />
</copy>
<!-- Apache Derby -->
<copy toDir="${dbscripts}/derby">
&custom-dbscripts;
<fileset dir="./metadata/database">
<include name="*.sql" />
<exclude name="droptables.sql" />
</fileset>
<filterset>
<filtersfile file="./metadata/database/db_derby.properties"/>
</filterset>
<mapper type="glob" from="*-raw.sql" to="*.sql" />
</copy>
<!-- Oracle -->
<copy toDir="${dbscripts}/oracle">
&custom-dbscripts;
<fileset dir="./metadata/database">
<include name="*.sql" />
<exclude name="droptables.sql" />
</fileset>
<filterset>
<filtersfile file="./metadata/database/db_oracle.properties"/>
</filterset>
<mapper type="glob" from="*-raw.sql" to="*.sql" />
</copy>
</target>
<!-- ********************************************************************* -->
<!-- Build extras -->
<!-- ********************************************************************* -->
<target name="contrib" depends="stage-web">
<ant dir="contrib" />
</target>
<!-- ********************************************************************* -->
<!-- Generate Javadocs and Velocidocs -->
<!-- ********************************************************************* -->
<target name="docs" depends="javadoc,velocidoc" >
<copy todir="${build.javadoc}">
<fileset dir="${build.velocidoc}/docs">
<include name="*.css"/>
</fileset>
</copy>
</target>
<target name="javadoc">
<mkdir dir="${build.javadoc}"/>
<javadoc
bottom="Copyright (C) David M Johnson"
classpathref="javadoc.path"
destdir="${build.javadoc}"
doctitle="Javadocs: Roller Weblogger ${ro.version}"
private="false"
version="false"
windowtitle="Javadocs: Roller Weblogger ${ro.version}">
<sourcepath>
<pathelement path="./src"/>
<pathelement path="${ro.build}/generated/src.business"/>
<pathelement path="${ro.build}/generated/src.presentation"/>
</sourcepath>
<packageset dir="src" defaultexcludes="yes">
<include name="org/roller/**" />
<exclude name="org/roller/business/prevayler/**" />
</packageset>
<link href="http://java.sun.com/j2se/1.4/docs/api/"/>
<link href="http://java.sun.com/products/servlet/2.3/javadoc/"/>
<link href="http://jakarta.apache.org/struts/doc-1.0.2/api"/>
<link href="http://hibernate.bluemars.net/hib_docs/api/"/>
</javadoc>
<copy todir="${build.javadoc}">
<fileset dir="${basedir}/src">
<include name="**/roller*.png"/>
</fileset>
</copy>
</target>
<target name="velocidoc">
<mkdir dir="${build.velocidoc}/temp"/>
<copy todir="${build.velocidoc}/temp">
<fileset dir="./web/WEB-INF/classes/">
<include name="bookmark.vm" />
<include name="comments.vm" />
<include name="navbar.vm" />
<include name="referer.vm" />
<include name="roller.vm" />
<include name="atommacros.vm" />
<include name="rssmacros.vm" />
<include name="user.vm" />
<include name="weblog.vm" />
<include name="website.vm" />
<!--
-->
</fileset>
</copy>
<mkdir dir="${build.velocidoc}/docs"/>
<java fork="true" jar="${ro.tools}/buildtime/velocidoc-app.jar">
<arg line="-s ${build.velocidoc}/temp \
-d ${build.velocidoc}/docs \
-t ${ro.tools}/buildtime/velocidoc-templates/ \
-c ${ro.tools}/buildtime/velocidoc-templates/control.vm "/>
</java>
</target>
<!-- ********************************************************************* -->
<!-- Create Binary Release -->
<!-- ********************************************************************* -->
<target name="full-release" depends="binary-release">
</target>
<target name="binary-release" depends="source-release">
<!-- Substitute in resource ref for deployment for standard container -->
<replace file="${build.stage_web}/WEB-INF/web.xml"
token="&lt;!-- TOMCAT_RESOURCE_REF --&gt;">
<replacevalue><![CDATA[
<resource-ref>
<res-ref-name>jdbc/rollerdb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
]]></replacevalue>
</replace>
<fixcrlf srcdir="${build.stage_web}/WEB-INF" eol="lf" includes="**/*.xml" />
<!-- Tar and GZip the webapp -->
<tar tarfile="${ro.build}/roller-${ro.version}.tar"
basedir="${ro.build}"
includes="roller/**"
excludes="roller/article/**,**/*.bak,**/*~" />
<gzip zipfile="${ro.build}/roller-${ro.version}.tar.gz"
src="${ro.build}/roller-${ro.version}.tar" />
<delete>
<fileset dir="${ro.build}" includes="*.tar"/>
</delete>
</target>
<!-- ********************************************************************* -->
<!-- Create Source Release -->
<!-- ********************************************************************* -->
<target name="source-release" depends="contrib">
<copy todir="${ro.build}/roller-src">
<fileset dir="${basedir}">
<include name="metadata/**" />
<include name="personal/**" />
<include name="custom/**" />
<include name="contrib/**" />
<include name="src/**" />
<include name="tests/**" />
<include name="web/**" />
<include name="docs/**" />
<include name="ant.properties" />
<include name="build.bat" />
<include name="build.sh" />
<include name="build.xml" />
<include name="properties.xmlf" />
<include name="CHANGES.txt" />
<include name="LICENSE.txt" />
<include name="README.txt" />
<exclude name="**/codewright*/**"/>
<exclude name="docs/installguide/old/**"/>
<exclude name="docs/userguide/old/**"/>
<exclude name="**/CVS/**"/>
<exclude name="**/*.bak"/>
<exclude name="**/*-hide"/>
<exclude name="**/*.diff"/>
<exclude name="**/*.patch"/>
<exclude name="**/*~"/>
<exclude name="**/*.#*"/>
<exclude name="**/WS_FTP.LOG"/>
<exclude name="**/.nbattrs"/>
</fileset>
</copy>
<!-- Tar and GZip the sources -->
<tar tarfile="${ro.build}/roller-src-${ro.version}.tar" basedir="${ro.build}" includes="roller-src/**" />
<gzip zipfile="${ro.build}/roller-src-${ro.version}.tar.gz"
src="${ro.build}/roller-src-${ro.version}.tar" />
<!-- Clear the source release dir, we're making the tools release next -->
<delete dir="${ro.build}/roller-src" />
<!-- Tar and GZip the tools -->
<copy todir="${ro.build}/roller-src/tools">
<fileset dir="${basedir}">
<include name="LICENSE.txt" />
</fileset>
<fileset dir="${basedir}/tools">
<include name="**" />
<exclude name="**/*.bak" />
<exclude name="**/*~" />
</fileset>
</copy>
<tar tarfile="${ro.build}/roller-tools-${ro.version}.tar"
basedir="${ro.build}" includes="roller-src/**" />
<gzip zipfile="${ro.build}/roller-tools-${ro.version}.tar.gz"
src="${ro.build}/roller-tools-${ro.version}.tar" />
<delete>
<fileset dir="${ro.build}" includes="*.tar"/>
</delete>
<delete dir="${ro.build}/roller-src" />
</target>
<!-- ********************************************************************* -->
<!-- TEST targets -->
<!-- ********************************************************************* -->
<target name="tests" depends="build-test" description="All unit tests" >
<antcall target="test-hibernate"/>
<antcall target="test-servlets"/>
<antcall target="test-utils"/>
</target>
<target name="build-test" depends="build" description="Build unit tests" >
<mkdir dir="${build.tests}" />
<mkdir dir="${build.tests}/logs" />
<mkdir dir="${build.tests}/planet-cache" />
<mkdir dir="${build.tests}/WEB-INF/classes" />
<mkdir dir="${build.tests}/WEB-INF/classes/themes" />
<javac srcdir="${basedir}/tests/"
destdir="${build.tests}/WEB-INF/classes"
includeantruntime="false"
debug="true" optimize="false" verbose="false" deprecation="false">
&custom-src-tests;
<classpath>
<path refid="junit.path"/>
</classpath>
</javac>
<!-- register Ant tasks that were just built -->
<taskdef name="startdb" classname="org.roller.ant.StartHsqldbTask"
classpath="${basedir}/tools/buildtime/hsqldb.jar;${build.tests}/WEB-INF/classes" />
<taskdef name="stopdb" classname="org.roller.ant.StopHsqldbTask"
classpath="${basedir}/tools/buildtime/hsqldb.jar;${build.tests}/WEB-INF/classes" />
<!--
Copy required files to ${build.tests} to make them available for
testing without interfering with the "real" build in ${build.stage_web}
-->
<copy file="${basedir}/web/WEB-INF/classes/roller.properties"
todir="${build.tests}/WEB-INF/classes/"/>
<copy file="${basedir}/personal/testing/roller-custom.properties"
todir="${build.tests}"/>
<copy file="${basedir}/personal/testing/hibernate.cfg.xml"
tofile="${build.tests}/WEB-INF/classes/hibernate.cfg.xml" />
<copy file="${basedir}/personal/testing/log4j.properties"
tofile="${build.tests}/WEB-INF/classes/log4j.properties" />
<copy file="${basedir}/personal/testing/bookmarks.opml"
tofile="${build.tests}/WEB-INF/classes/bookmarks.opml" />
<copy file="${basedir}/web/images/rssbadge.gif"
tofile="${build.tests}/rssbadge.gif" />
<copy todir="${build.tests}/WEB-INF/classes">
<fileset dir="${basedir}/web/WEB-INF/classes">
<include name="App*.properties"/>
</fileset>
</copy>
<copy todir="${build.tests}/WEB-INF/classes">
<fileset dir="${basedir}/web/WEB-INF/classes">
<include name="**/*.vm"/>
</fileset>
</copy>
<copy file="${basedir}/web/WEB-INF/classes/rollerRuntimeConfigDefs.xml"
todir="${build.tests}/WEB-INF/classes/"/>
<copy file="${basedir}/web/WEB-INF/velocity.properties"
tofile="${build.tests}/WEB-INF/velocity.properties" />
<copy file="${basedir}/web/WEB-INF/classes/rome.properties"
tofile="${build.tests}/WEB-INF/classes/rome.properties" />
<copy file="${basedir}/web/WEB-INF/toolbox.xml"
tofile="${build.tests}/WEB-INF/toolbox.xml" />
<copy file="${basedir}/web/WEB-INF/classes/blacklist.txt"
tofile="${build.tests}/WEB-INF/classes/blacklist.txt" />
</target>
<target name="clean-tests" description="Removes test build and result artifacts and reports">
<delete dir="${ro.build}/tests"/>
<delete dir="${ro.build}/build/reports"/>
</target>
<target name="test-hibernate" depends="build-test" description="Back-end tests">
<mkdir dir="${build.reports}/hibernate/xml"/>
<mkdir dir="${build.reports}/hibernate/html"/>
<startdb database="${build.tests}/testdb" port="3219" />
<sql driver="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:hsql://localhost:3219"
userid="sa" password=""
src="${ro.build}/roller/WEB-INF/dbscripts/hsql/createdb.sql"
classpath="${ro.tools}/buildtime/hsqldb.jar" />
&custom-pre-dbtest;
<junit fork="true" dir="${build.tests}">
<classpath>
<path refid="junit.path"/>
</classpath>
<jvmarg value="-Dro.build=${ro.build}"/>
<jvmarg value="-Dcatalina.base=${build.tests}"/> <!-- needed to satisfy ref in log4j.properties -->
<formatter type="xml"/>
<batchtest toDir="${build.reports}/hibernate/xml">
<fileset dir="${build.tests}/WEB-INF/classes">
<include name="org/roller/business/*Test.class"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${build.reports}/hibernate/xml">
<fileset dir="${build.reports}/hibernate/xml">
<include name="TEST-*.xml"/>
</fileset>
<report format="noframes" toDir="${build.reports}/hibernate/html"/>
</junitreport>
&custom-post-dbtest;
<sql driver="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:hsql://localhost:3219"
userid="sa" password=""
src="./build/roller/WEB-INF/dbscripts/droptables.sql"
classpath="${ro.tools}/buildtime/hsqldb.jar" />
<stopdb port="3219"/>
<echo>Suggested: Run "ant consistency-check".</echo>
</target>
<target name="test-servlets" depends="build-test">
<mkdir dir="${build.reports}/servlets/xml"/>
<mkdir dir="${build.reports}/servlets/html"/>
<startdb database="${build.tests}/testdb" port="3219" />
<sql driver="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:hsql://localhost:3219"
userid="sa" password=""
src="./build/roller/WEB-INF/dbscripts/hsql/createdb.sql"
classpath="${ro.tools}/buildtime/hsqldb.jar" />
<junit fork="true" dir="${build.tests}">
<batchtest toDir="${build.reports}/servlets/xml">
<fileset dir="${build.tests}/WEB-INF/classes">
<include name="org/roller/presentation/**/*Test.class"/>
<exclude name="**/ApplicationResourcesTest.class"/>
<exclude name="**/ArchiveParserTest.class"/>
<exclude name="**/AtomCollectionTest.class"/>
<exclude name="**/AtomServletTest.class"/>
<exclude name="**/ExportRssTest.class"/>
<exclude name="**/LanguageUtilTest.class"/>
</fileset>
</batchtest>
<!--arg value="org.roller.presentation.velocity.ExportRssTest"/-->
<jvmarg value="-DrollerImpl=hibernate"/>
<jvmarg value="-Dro.build=${ro.build}"/>
<jvmarg value="-Dcatalina.base=${build.tests}"/> <!-- needed to satisfy ref in log4j.properties -->
<jvmarg value="-Droller.custom.config=${build.tests}/roller-custom.properties"/>
<formatter type="xml"/>
<classpath>
<path refid="junit.path"/>
</classpath>
</junit>
<junitreport todir="${build.reports}/servlets/xml">
<fileset dir="${build.reports}/servlets/xml">
<include name="TEST-*.xml"/>
</fileset>
<report format="noframes" toDir="${build.reports}/servlets/html"/>
</junitreport>
<sql driver="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:hsql://localhost:3219"
userid="sa" password=""
src="./build/roller/WEB-INF/dbscripts/droptables.sql"
classpath="${ro.tools}/buildtime/hsqldb.jar" />
<stopdb port="3219" />
</target>
<target name="test-utils" depends="build-test" >
<mkdir dir="${build.reports}/utils/xml"/>
<mkdir dir="${build.reports}/utils/html"/>
<junit fork="true" dir="${build.tests}">
<batchtest toDir="${build.reports}/utils/xml">
<fileset dir="${build.tests}/WEB-INF/classes">
<include name="org/roller/util/*Test.class"/>
</fileset>
</batchtest>
<jvmarg value="-DrollerImpl=hibernate"/>
<jvmarg value="-Dcatalina.base=."/> <!-- needed to satisfy ref in log4j.properties -->
<formatter type="xml"/>
<classpath>
<path refid="junit.path"/>
</classpath>
</junit>
<junitreport todir="${build.reports}/utils/xml">
<fileset dir="${build.reports}/utils/xml">
<include name="TEST-*.xml"/>
</fileset>
<report format="noframes" toDir="${build.reports}/utils/html"/>
</junitreport>
</target>
<!-- You can specify testClass using -DtestClass=foo -->
<property name="testClass" value="org.roller.presentation.velocity.plugins.smileys.SmileysTest"/>
<target name="test-one" depends="build-test">
<java classname="junit.textui.TestRunner" fork="yes" failonerror="false">
<arg value="${testClass}"/>
<classpath>
<path refid="junit.path"/>
</classpath>
</java>
</target>
<!-- ********************************************************************* -->
<!-- EXAMPLE targets -->
<!-- ********************************************************************* -->
<target name="deploy-tomcat" depends="stage-web" >
<ant dir="./personal" target="deploy-tomcat" />
</target>
<target name="deploy-resin" depends="stage-web" >
<ant dir="./personal" target="deploy-resin" />
</target>
<target name="deploy-isp" depends="stage-web" >
<ant dir="./personal" target="deploy-isp" />
</target>
<target name="clean-isp">
<ant dir="./personal" target="clean-isp" />
</target>
<target name="official-release" depends="tests,full-release" >
<ant dir="./personal" target="official-release" />
</target>
<!-- ********************************************************************* -->
<!-- EXPERIMENTAL targets -->
<!-- ********************************************************************* -->
<!-- EXPERIMENTAL: Run ConsistencyCheck. -->
<target name="consistency-check">
<echo>Use -Ddelete=1 to delete all orphans.
Use -Dverbose=1 to get verbose output.
'delete' and 'verbose' are exclusive, 'delete' wins.
</echo>
<condition property="command" value="-v">
<isset property="verbose" />
</condition>
<condition property="command" value="-purge">
<isset property="delete" />
</condition>
<java classname="org.roller.business.utils.ConsistencyCheck" fork="yes">
<arg value="${command}"/>
<jvmarg value="-Dusername=roller"/>
<jvmarg value="-Dpassword=tiger"/>
<classpath>
<path refid="base.path"/>
<path location="${ro.build}/lib/rollerbeans.jar"/>
<path location="${ro.tools}/lib/mm.mysql-2.0.14-bin.jar"/>
</classpath>
</java>
</target>
<target name="compile-jsps" depends="stage-web">
<mkdir dir="${ro.build}/jspc"/>
<taskdef classname="org.apache.jasper.JspC" name="jasper2" >
<classpath refid="jasper.path"/>
</taskdef>
<jasper2 validateXml="false"
uriroot="${build.stage_web}"
webXmlFragment="${build.stage_web}/WEB-INF/generated_web.xml"
outputDir="${ro.build}/jspc" />
<mkdir dir="${ro.build}/jspc.classes"/>
<javac source="1.4" debug="true" srcdir="${ro.build}/jspc" excludes="**/header_jsp.*"
destdir="${ro.build}/jspc.classes" fork="true">
<classpath refid="jsp.compile.path"/>
</javac>
</target>
<!-- ********************************************************************* -->
<!-- HSQLDB start, init and stop targets -->
<!-- ********************************************************************* -->
<target name="init-hsqldb" description=
"Initializes HSQLDB on port 3219 by running Roller's droptable and createdb scripts">
&custom-post-dbtest;
<sql driver="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:hsql://localhost:3219"
userid="sa" password=""
src="./build/roller/WEB-INF/dbscripts/droptables.sql" onerror="continue"
classpath="${ro.tools}/buildtime/hsqldb.jar" />
<sql driver="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:hsql://localhost:3219"
userid="sa" password=""
src="./build/roller/WEB-INF/dbscripts/hsql/createdb.sql"
classpath="${ro.tools}/buildtime/hsqldb.jar" />
&custom-pre-dbtest;
</target>
<target name="start-hsqldb" description="Starts HSQLDB database on port 3219">
<java classname="org.hsqldb.Server" fork="yes" classpath="./tools/buildtime/hsqldb.jar">
<arg value="-database"/>
<arg value="${build.tests}/testdb"/>
<arg value="-port"/>
<arg value="3219"/>
</java>
</target>
<target name="stop-hsqldb" description="Drop tables and stops the HSQLDB database on port 3219">
<sql driver="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:hsql://localhost:3219"
userid="sa" password=""
src="./build/roller/WEB-INF/dbscripts/droptables.sql"
classpath="${ro.tools}/buildtime/hsqldb.jar" />
<sql driver="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:hsql://localhost:3219"
userid="sa" password=""
classpath="${ro.tools}/buildtime/hsqldb.jar" >
SHUTDOWN
</sql>
</target>
</project>