blob: c1048221b455da389339cbcf07d887487a6a4e2b [file] [log] [blame]
<?xml version="1.0"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. The ASF licenses this file to You
under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. For additional information regarding
copyright in this work, please see the NOTICE file in the top level
directory of this distribution.-
-->
<!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">
<!-- Because we don't want to allow release builds to be done with Java 1.5 (yet) -->
<available classname="java.lang.ProcessBuilder" property="java15.present" />
<!-- 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
stage-web - Build all Java code, stage webapp
full-release - Build binary and source release files
clean - Blow away all generated code and all byte code
rebuild - Clean and build all
tests - Build and run all JUnit tests
build-tests - Build all JUnit tests
tests-business - Start DB, run business layer tests, stop DB
tests-presentation - Run presentation layer tests
tests-utils - Run utility tests
start-db - Start test DB
init-db - Initialize a running test DB
stop-db - Stop test DB
docs - Build all docs
javadoc - Build javadocs
velocidocs - Build velocidocs
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/apache/roller/pojos/WeblogTemplate.java" />
<fileset dir="./src" includes="org/apache/roller/pojos/*Data.java" />
<fileset dir="./src" includes="org/apache/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.apache.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
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/apache/roller/presentation/forms"
token="DataForm" value="Form"/>
<move todir="${build.generated}/src.presentation/org/apache/roller/presentation/forms">
<fileset dir="${build.generated}/src.presentation/org/apache/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/apache/roller/pojos/WeblogTemplate.java" />
<fileset dir="./src" includes="org/apache/roller/pojos/*Data.java" />
<fileset dir="./src" includes="org/apache/roller/pojos/*Assoc.java" />
<fileset dir="./src" includes="org/apache/roller/business/*Data.java" />
&custom-gen-beans;
<hibernate validatexml="true" version="3.0"/>
</hibernatedoclet>
</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/apache/roller/presentation/**/actions/*.java" />
<include name="org/apache/roller/presentation/RollerContext.java" />
<include name="org/apache/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.4"
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/apache/roller/pojos/BookmarkData.java"/>
<include name="org/apache/roller/pojos/CommentData.java"/>
<include name="org/apache/roller/pojos/EntryAttributeData.java"/>
<include name="org/apache/roller/pojos/FolderData.java"/>
<include name="org/apache/roller/pojos/RefererData.java"/>
<include name="org/apache/roller/pojos/Template.java"/>
<include name="org/apache/roller/pojos/UserData.java"/>
<include name="org/apache/roller/pojos/WeblogEntryData.java"/>
<include name="org/apache/roller/pojos/WeblogCategoryData.java"/>
<include name="org/apache/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/apache/roller/presentation/**, org/apache/roller/webservices/**" >
<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/apache/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>
<!-- build standalone aapp-sdk.jar, for external consumption -->
<target name="aapp-sdk" depends="build">
<mkdir dir="${ro.build}/lib"/>
<jar destfile="${ro.build}/lib/aapp-sdk.jar">
<manifest>
<attribute name="Manifest-Version" value="${ro.version}"/>
</manifest>
<fileset dir="${build.compile_web}">
<include name="org/apache/roller/webservices/adminapi/sdk/*"/>
</fileset>
</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/apache/roller/presentation/**, org/apache/roller/webservices/**, org/apache/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"/>
<include name="NOTICE.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"/>
<mkdir dir="${build.stage_web}/docs"/>
<!-- 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="${basedir}/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 docs to staging -->
<copy todir="${build.stage_web}/docs">
<fileset dir="${basedir}/docs">
<include name="examples/**" />
<include name="installguide/**" />
<include name="userguide/**" />
<exclude name="**/old/**" />
</fileset>
</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="spring.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>
<taskdef name="texen" classname="org.apache.velocity.texen.ant.TexenTask"
classpath="${basedir}/tools/lib/velocity-dep-1.4.jar" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/mysql.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="build/roller/WEB-INF/dbscripts/mysql/"
outputFile="README.txt" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/postgresql.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="build/roller/WEB-INF/dbscripts/postgresql/"
outputFile="README.txt" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/hsqldb.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="build/roller/WEB-INF/dbscripts/hsqldb/"
outputFile="README.txt" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/derby.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="build/roller/WEB-INF/dbscripts/derby/"
outputFile="README.txt" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/db2.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="build/roller/WEB-INF/dbscripts/db2/"
outputFile="README.txt" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/oracle.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="build/roller/WEB-INF/dbscripts/oracle/"
outputFile="README.txt" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/mssql.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="build/roller/WEB-INF/dbscripts/mssql/"
outputFile="README.txt" />
</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/apache/roller/**" />
<exclude name="org/apache/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 Releases -->
<!-- ********************************************************************* -->
<target name="apache-release" depends="full-release">
<!-- takes the full release, removes unshippable jars -->
<!-- first, deal with the webapp release file -->
<mkdir dir="${ro.build}/apache-release" />
<mkdir dir="${ro.build}/unshippable/roller/WEB-INF/lib" />
<gunzip dest="${ro.build}/apache-release/roller-${ro.version}.tar"
src="${ro.build}/roller-${ro.version}.tar.gz" />
<untar src="${ro.build}/apache-release/roller-${ro.version}.tar"
dest="${ro.build}/apache-release" />
<move todir="${ro.build}/unshippable/roller/WEB-INF/lib" >
<fileset dir="${ro.build}/apache-release/roller/WEB-INF/lib">
<include name="mail.jar" />
<include name="activation.jar" />
<include name="hibernate3.jar" />
<include name="asm.jar" />
<include name="asm-attrs.jar" />
<include name="cglib-2.1.3.jar" />
<include name="dom4j-1.6.1.jar" />
<include name="ehcache-1.1.jar" />
<include name="jdbc2_0-stdext.jar" />
<include name="jta.jar" />
</fileset>
</move>
<tar tarfile="${ro.build}/apache-roller-${ro.version}.tar"
basedir="${ro.build}/apache-release"
includes="roller/**"/>
<gzip zipfile="${ro.build}/apache-roller-${ro.version}.tar.gz"
src="${ro.build}/apache-roller-${ro.version}.tar" />
<tar tarfile="${ro.build}/required-jars-roller-webapp-${ro.version}.tar"
basedir="${ro.build}/unshippable/roller" />
<gzip zipfile="${ro.build}/required-jars-roller-webapp-${ro.version}.tar.gz"
src="${ro.build}/required-jars-roller-webapp-${ro.version}.tar" />
<delete>
<fileset dir="${ro.build}" includes="*.tar"/>
<fileset dir="${ro.build}/unshippable" includes="**" />
</delete>
<delete>
<fileset dir="${ro.build}" includes="*.tar"/>
<fileset dir="${ro.build}/apache-release" />
</delete>
<!-- second, deal with the source release -->
<mkdir dir="${ro.build}/apache-release" />
<mkdir dir="${ro.build}/unshippable/" />
<gunzip dest="${ro.build}/apache-release/roller-src-${ro.version}.tar"
src="${ro.build}/roller-src-${ro.version}.tar.gz" />
<untar src="${ro.build}/apache-release/roller-src-${ro.version}.tar"
dest="${ro.build}/apache-release" />
<copy todir="${ro.build}/apache-release/roller-src">
<fileset dir="${basedir}">
<include name="README.txt"/>
<include name="LICENSE.txt"/>
<include name="NOTICE.txt"/>
</fileset>
</copy>
<move todir="${ro.build}/unshippable/roller-src">
<fileset dir="${ro.build}/apache-release/roller-src">
<include name="**/hibernate-3.1/**" />
</fileset>
</move>
<move todir="${ro.build}/unshippable/roller-src">
<fileset dir="${ro.build}/apache-release/roller-src">
<include name="**/activation.jar" />
<include name="**/mail.jar" />
<include name="**/ejb-1.1.jar" />
</fileset>
</move>
<tar tarfile="${ro.build}/apache-roller-src-${ro.version}.tar"
basedir="${ro.build}/apache-release"
includes="roller-src/**"/>
<gzip zipfile="${ro.build}/apache-roller-src-${ro.version}.tar.gz"
src="${ro.build}/apache-roller-src-${ro.version}.tar" />
<tar tarfile="${ro.build}/required-jars-roller-src-${ro.version}.tar"
basedir="${ro.build}/unshippable/roller-src" />
<gzip zipfile="${ro.build}/required-jars-roller-src-${ro.version}.tar.gz"
src="${ro.build}/required-jars-roller-src-${ro.version}.tar" />
<delete>
<fileset dir="${ro.build}" includes="*.tar"/>
<fileset dir="${ro.build}/unshippable" includes="**" />
</delete>
<delete>
<fileset dir="${ro.build}" includes="*.tar"/>
<fileset dir="${ro.build}/apache-release" />
</delete>
</target>
<target name="full-release" depends="version-check,binary-release" >
</target>
<target name="version-check" if="java15.present" >
<fail message="ERROR: DON'T BUILD RELEASES WITH JAVA 1.5 (yet)" />
</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="src/**" />
<include name="tests/**" />
<include name="testdata/**" />
<include name="metadata/**" />
<include name="personal/**" />
<include name="custom/**" />
<include name="contrib/**" />
<include name="web/**" />
<include name="docs/**" />
<include name="tools/**" />
<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 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" />
<delete>
<fileset dir="${ro.build}" includes="*.tar"/>
</delete>
<delete dir="${ro.build}/roller-src" />
</target>
<!-- ********************************************************************* -->
<!-- TEST targets -->
<!-- ********************************************************************* -->
<target name="tests" depends="build-tests,test-business,test-presentation,test-utils" description="All unit tests" >
</target>
<target name="build-tests" 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.apache.roller.ant.StartHsqldbTask"
classpath="${basedir}/tools/buildtime/hsqldb.jar;${build.tests}/WEB-INF/classes" />
<taskdef name="stopdb" classname="org.apache.roller.ant.StopHsqldbTask"
classpath="${basedir}/tools/buildtime/hsqldb.jar;${build.tests}/WEB-INF/classes" />
<!-- Copy custom testing files -->
<copy todir="${build.tests}">
<fileset dir="${basedir}/testdata">
<include name="**/**"/>
</fileset>
</copy>
<!--
Copy required files to ${build.tests} to make them available for
testing without interfering with the "real" build in ${build.stage_web}
-->
<copy todir="${build.tests}/WEB-INF/classes">
<fileset dir="${basedir}/web/WEB-INF/classes">
<include name="App*.properties"/>
<include name="**/*.vm"/>
<exclude name="hibernate.cfg.xml"/>
</fileset>
</copy>
<copy file="${basedir}/web/WEB-INF/classes/roller.properties"
todir="${build.tests}/WEB-INF/classes/"/>
<copy file="${ro.build}/roller/WEB-INF/web.xml"
todir="${build.tests}/WEB-INF/"/>
<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>
<!-- ===================================== -->
<!-- test business -->
<target name="test-business" depends="build-tests" description="Back-end tests">
<mkdir dir="${build.reports}/business/xml"/>
<mkdir dir="${build.reports}/business/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/hsqldb/createdb.sql"
classpath="${ro.tools}/buildtime/hsqldb.jar" />
&custom-pre-dbtest;
<junit fork="true" dir="${build.tests}" printsummary="on">
<classpath>
<path refid="junit.path"/>
</classpath>
<!-- needed to satisfy ref in log4j.properties -->
<jvmarg value="-Dcatalina.base=${build.tests}"/>
<jvmarg value="-Dro.build=${ro.build}"/>
<jvmarg value="-Droller.custom.config=${build.tests}/roller-custom.properties"/>
<formatter type="xml"/>
<batchtest toDir="${build.reports}/business/xml">
<fileset dir="${build.tests}/WEB-INF/classes">
<include name="org/apache/roller/business/UserTest.class"/>
<include name="org/apache/roller/business/WeblogTest.class"/>
<include name="org/apache/roller/business/PermissionTest.class"/>
<include name="org/apache/roller/business/WeblogPageTest.class"/>
<include name="org/apache/roller/business/PingsTest.class"/>
<include name="org/apache/roller/business/PropertiesTest.class"/>
<include name="org/apache/roller/business/WeblogEntryTest.class"/>
<include name="org/apache/roller/business/WeblogCategoryTest.class"/>
<include name="org/apache/roller/business/CommentTest.class"/>
<include name="org/apache/roller/business/FileManagerTest.class"/>
<include name="org/apache/roller/business/IndexManagerTest.class"/>
<include name="org/apache/roller/business/PlanetManagerTest.class"/>
<include name="org/apache/roller/business/BookmarkTest.class"/>
<include name="org/apache/roller/business/RefererTest.class"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${build.reports}/business/xml">
<fileset dir="${build.reports}/business/xml">
<include name="TEST-*.xml"/>
</fileset>
<report format="noframes" toDir="${build.reports}/business/html"/>
</junitreport>
&custom-post-dbtest;
<sql driver="org.hsqldb.jdbcDriver"
url="jdbc:hsqldb:hsql://localhost:3219"
userid="sa" password=""
src="${ro.build}/roller/WEB-INF/dbscripts/droptables.sql"
classpath="${ro.tools}/buildtime/hsqldb.jar" />
<stopdb port="3219"/>
<echo>Suggested: Run "ant consistency-check".</echo>
</target>
<!-- ===================================== -->
<!-- test presentation -->
<target name="test-presentation" depends="build-tests">
<mkdir dir="${build.reports}/presentation/xml"/>
<mkdir dir="${build.reports}/presentation/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/hsqldb/createdb.sql"
classpath="${ro.tools}/buildtime/hsqldb.jar" />
<junit fork="true" dir="${build.tests}">
<batchtest toDir="${build.reports}/presentation/xml">
<fileset dir="${build.tests}/WEB-INF/classes">
<include name="org/apache/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.apache.roller.presentation.velocity.ExportRssTest"/-->
<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}/presentation/xml">
<fileset dir="${build.reports}/presentation/xml">
<include name="TEST-*.xml"/>
</fileset>
<report format="noframes" toDir="${build.reports}/presentation/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>
<!-- ===================================== -->
<!-- test utils -->
<target name="test-utils" depends="build-tests" >
<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/apache/roller/util/*Test.class"/>
</fileset>
</batchtest>
<!-- needed to satisfy ref in log4j.properties -->
<jvmarg value="-Dcatalina.base=."/>
<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>
<target name="test-aapp" depends="test-aapp-sdk, test-aapp-handler"/>
<target name="test-aapp-sdk" depends="build-tests">
<mkdir dir="${build.reports}/webservices/adminapi/sdk/xml"/>
<mkdir dir="${build.reports}/webservices/adminapi/sdk/html"/>
<junit fork="true" dir="${build.tests}" printsummary="on">
<syspropertyset>
<propertyref builtin="commandline"/>
</syspropertyset>
<classpath>
<path refid="junit.path"/>
</classpath>
<formatter type="xml"/>
<batchtest toDir="${build.reports}/webservices/adminapi/sdk/xml">
<fileset dir="${build.tests}/WEB-INF/classes">
<include name="org/apache/roller/webservices/adminapi/sdk/*EntryTest.class"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${build.reports}/webservices/adminapi/sdk/xml">
<fileset dir="${build.reports}/webservices/adminapi/sdk/xml">
<include name="TEST-*.xml"/>
</fileset>
<report format="noframes" toDir="${build.reports}/webservices/adminapi/sdk/html"/>
</junitreport>
</target>
<target name="test-aapp-handler" depends="build-tests">
<mkdir dir="${build.reports}/webservices/adminapi/xml"/>
<mkdir dir="${build.reports}/webservices/adminapi/html"/>
<junit fork="true" dir="${build.tests}" printsummary="on">
<syspropertyset>
<propertyref builtin="commandline"/>
</syspropertyset>
<classpath>
<path refid="junit.path"/>
</classpath>
<formatter type="xml"/>
<batchtest toDir="${build.reports}/webservices/adminapi/xml">
<fileset dir="${build.tests}/WEB-INF/classes">
<include name="org/apache/roller/webservices/adminapi/*HandlerTest.class"/>
</fileset>
</batchtest>
</junit>
<junitreport todir="${build.reports}/webservices/adminapi/xml">
<fileset dir="${build.reports}/webservices/adminapi/xml">
<include name="TEST-*.xml"/>
</fileset>
<report format="noframes" toDir="${build.reports}/webservices/adminapi/html"/>
</junitreport>
</target>
<!-- You can specify testClass using -DtestClass=foo -->
<property name="testClass" value="org.apache.roller.presentation.velocity.plugins.smileys.SmileysTest"/>
<target name="test-one" depends="build-tests">
<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.apache.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-db" description=
"Initializes built-in database by running drop table and create table">
&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-db" description="Starts built-in database">
<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-db" description="Drop tables and stops the built-in database">
<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>
<!-- ********************************************************************* -->
<!-- Experimental Admin API SDK -->
<!-- ********************************************************************* -->
<target name="adminapi-sdk">
<mkdir dir="dist"/>
<jar basedir="./build/compile_web/" destfile="./build/aapp-sdk.jar">
<include name="org/apache/roller/presentation/atomadminapi/sdk/*.class"/>
</jar>
</target>
</project>