blob: 4a487b97d43dbd7a79a36c5bd4ffb7295e8f0b27 [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-ant SYSTEM "custom/custom-ant.xmlf">
<!ENTITY custom-jars SYSTEM "custom/custom-jars.xmlf">
<!ENTITY custom-gen-business SYSTEM "custom/custom-gen-business.xmlf">
<!ENTITY custom-build-business SYSTEM "custom/custom-build-business.xmlf">
<!ENTITY custom-build-web SYSTEM "custom/custom-build-web.xmlf">
<!ENTITY custom-gen-web SYSTEM "custom/custom-gen-web.xmlf">
<!ENTITY custom-src-web SYSTEM "custom/custom-src-web.xmlf">
<!ENTITY custom-web SYSTEM "custom/custom-web.xmlf">
<!ENTITY custom-src-tests SYSTEM "custom/custom-src-tests.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">
]>
<!-- ********************************************************************* -->
<!-- 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 wrappers/forms, compile, gen web, gen O/R mappings, stage webapp
build - Same as 'all' but NO code gen
stage-webapp - Build almost all: compile, gen web, gen O/R mappings, stage webapp
apache-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
test-business - Start DB, run business layer tests, stop DB
test-presentation - Run presentation layer tests
test-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-webapp" description="Build all">
</target>
<target name="build" depends="copy-webapp" description="Compile code and copy files, no code generation">
</target>
<target name="rebuild" depends="clean,all" description="Clean and build all">
</target>
<target name="clean" description="Clean out build and dist directory">
<delete dir="${ro.build}" />
<delete dir="${ro.dist}" />
</target>
<!-- ********************************************************************* -->
<!-- XDoclet code generation -->
<!-- ********************************************************************* -->
<target name="generate" depends="gen-wrappers,gen-forms" >
</target>
<!-- ============================================== -->
<!-- generate code/files for the business layer -->
<target name="gen-business" description="Generate business layer resources">
<taskdef name="hibernatedoclet"
classname="xdoclet.modules.hibernate.HibernateDocletTask"
classpathref="xdoclet.path" />
<!-- generate hibernate files -->
<hibernatedoclet
destdir="${build.compile.business}"
mergedir="./metadata/xdoclet"
excludedtags="@version,@author"
addedtags="@xdoclet-generated at ${TODAY}"
force="true">
<fileset dir="${ro.src}" includes="org/apache/roller/pojos/WeblogTemplate.java" />
<fileset dir="${ro.src}" includes="org/apache/roller/pojos/*Data.java" />
<fileset dir="${ro.src}" includes="org/apache/roller/pojos/*Assoc.java" />
<fileset dir="${ro.src}" includes="org/apache/roller/planet/pojos/*Assoc.java" />
<fileset dir="${ro.src}" includes="org/apache/roller/planet/pojos/*Data.java" />
<hibernate validatexml="true" version="3.0"/>
</hibernatedoclet>
<!-- copy database related files -->
<antcall target="stage-dbscripts" />
<!-- allow for custom generation work -->
&custom-gen-business;
</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.business}">
<packageSubstitution packages="pojos" substituteWith="pojos.wrapper"/>
<fileset dir="${ro.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/WeblogEntryTagData.java"/>
<include name="org/apache/roller/pojos/WeblogCategoryData.java"/>
<include name="org/apache/roller/pojos/SiteTagAggregateData.java"/>
<include name="org/apache/roller/pojos/WebsiteData.java"/>
<include name="org/apache/roller/planet/pojos/PlanetEntryData.java"/>
<include name="org/apache/roller/planet/pojos/PlanetSubscriptionData.java"/>
</fileset>
<template
destinationFile="{0}Wrapper.java"
templateFile="metadata/xdoclet/pojo_wrapper.xdt"
subTaskName="Pojo Wrappers" />
</xdoclet>
</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.web}"/>
<!-- Use EJBDoclet to generate Struts forms -->
<ejbdoclet destdir="${build.generated}/unused" excludedtags="@version,@author">
<fileset dir="${ro.src}" includes="org/apache/roller/pojos/WeblogTemplate.java" />
<fileset dir="${ro.src}" includes="org/apache/roller/pojos/*Data.java" />
<fileset dir="${ro.src}" includes="org/apache/roller/planet/pojos/*Data.java" />
&custom-gen-web;
<!-- Generate Struts forms -->
<strutsform destdir="${build.generated.web}"
prefixWithPackageStructure="no"
templateFile="./metadata/xdoclet/struts_form.xdt">
<!-- into the org.apache.roller.ui.authoring.struts.forms package -->
<packageSubstitution packages="pojos"
substituteWith="ui.authoring.struts.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}/unused" pattern="{0}" />
</ejbdoclet>
<!-- Change Struts form names from *DataForm.java to *Form.java -->
<replace dir="${build.generated.web}/org/apache/roller/ui/authoring/struts/forms"
token="DataForm" value="Form"/>
<move todir="${build.generated.web}/org/apache/roller/ui/authoring/struts/forms">
<fileset dir="${build.generated.web}/org/apache/roller/ui/authoring/struts/forms" >
<include name="*DataForm.java"/>
<include name="*ConfigForm.java" />
</fileset>
<mapper type="glob" from="*DataForm.java" to="*Form.java"/>
</move>
<replace dir="${build.generated.web}/org/apache/roller/planet/ui/authoring/struts/forms"
token="DataForm" value="Form"/>
<move todir="${build.generated.web}/org/apache/roller/planet/ui/authoring/struts/forms">
<fileset dir="${build.generated.web}/org/apache/roller/planet/ui/authoring/struts/forms" >
<include name="*DataForm.java"/>
<include name="*ConfigForm.java" />
</fileset>
<mapper type="glob" from="*DataForm.java" to="*Form.java"/>
</move>
</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.webapp}/WEB-INF"/>
<mkdir dir="${build.compile.web}/META-INF/tlds"/>
<webdoclet force="true"
destdir="${build.webapp}/WEB-INF"
mergedir="./metadata/xdoclet"
excludedtags="@version,@author">
<fileset dir="${ro.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/ui/**/actions/*.java" />
<include name="org/apache/roller/ui/core/RollerContext.java" />
<include name="org/apache/roller/ui/core/RollerSession.java" />
<exclude name="**/LinkTag**" />
<exclude name="**/LinkParamTag**" />
</fileset>
<fileset dir="${build.generated.web}">
<include name="**/*Form.java" />
</fileset>
&custom-gen-web;
<!-- web.xml config -->
<deploymentdescriptor servletspec="2.4"
destdir="${build.webapp}/WEB-INF"
sessiontimeout="30"
displayname="Roller Weblogger" />
<!-- jsp taglib descriptor config -->
<jsptaglib jspversion="1.2" filename="roller.tld" shortname="roller"
uri="http://www.rollerweblogger.org/tags"
destdir="${build.webapp}/WEB-INF/classes/META-INF/tlds" />
<!-- struts struts-config.xml -->
<strutsconfigxml destdir="${build.webapp}/WEB-INF"
validatexml="true" mergedir="./metadata/xdoclet" version="1.1" />
<!-- struts validation.xml -->
<strutsvalidationxml/>
</webdoclet>
</target>
<!-- ********************************************************************* -->
<!-- Compile and jar Business Tier classes -->
<!-- ********************************************************************* -->
<target name="build-business">
<mkdir dir="${build.generated.business}"/>
<mkdir dir="${build.compile.business}"/>
<mkdir dir="${build.lib}"/>
<tstamp>
<format property="ro.buildTime" pattern="yyyyMMddhhmmss" />
</tstamp>
<echo file="${build.compile.business}/version.properties">
ro.version=${ro.version}
ro.buildTime=${ro.buildTime}
ro.buildUser=${user.name}
</echo>
<!-- compile roller business classes -->
<javac destdir="${build.compile.business}"
excludes="org/apache/roller/ui/**, org/apache/roller/webservices/**"
debug="${build.debug}"
source="${build.sourcelevel}"
deprecation="${build.deprecation}">
<src path="${ro.src}" />
<src path="${build.generated.business}"/>
<classpath>
<path refid="business.path"/>
&custom-jars;
</classpath>
</javac>
<!-- Copy resources -->
<copy todir="${build.compile.business}">
<fileset dir="${ro.src}"
excludes="**/*.java, **/*.html, **/*.png, org/apache/roller/ui/**, org/apache/roller/webservices/**" />
<fileset dir="${build.generated.business}" excludes="**/*.java" />
</copy>
<!-- allow for custom build work -->
&custom-build-business;
<!-- Jar up the business layer -->
<jar basedir="${build.compile.business}"
jarfile="${build.lib}/roller-business.jar"/>
</target>
<!-- ********************************************************************* -->
<!-- Compile and jar Presentation Tier classes -->
<!-- ********************************************************************* -->
<target name="build-web" depends="build-business" >
<mkdir dir="${build.compile.web}" />
<javac debug="${build.debug}"
source="${build.sourcelevel}"
destdir="${build.compile.web}"
includes="org/apache/roller/ui/**, org/apache/roller/webservices/**, org/apache/roller/util/rome/**" >
<src path="${ro.src}" />
<src path="${build.generated.web}"/>
&custom-src-web;
<classpath>
<path refid="presentation.path"/>
<path location="${build.compile.business}"/>
&custom-jars;
</classpath>
</javac>
<!-- Copy in resources -->
<copy todir="${build.compile.web}">
<fileset dir="${ro.src}">
<include name="**/*.properties"/>
<include name="**/*.tpl"/>
<include name="**/*.vm"/>
</fileset>
</copy>
&custom-build-web;
<!-- Jar up web classes -->
<jar jarfile="${build.lib}/roller-web.jar">
<fileset dir="${build.compile.web}" excludes="**/tomcat/**"/>
</jar>
</target>
<!-- ********************************************************************* -->
<!-- Stage web application -->
<!-- ********************************************************************* -->
<target name="stage-webapp" depends="gen-business, build-business, gen-web, build-web, copy-webapp" description="Stage webapp, including jars">
</target>
<target name="copy-webapp" depends="build-web" description="Stage webapp without code generation">
<mkdir dir="${build.webapp}/WEB-INF/lib"/>
<mkdir dir="${build.webapp}/WEB-INF/tlds"/>
<!-- Copy database configs to classpath in staging -->
<copy todir="${build.webapp}/WEB-INF/classes">
<fileset dir="${basedir}/metadata/database/hibernate" includes="hibernate.cfg.xml"/>
</copy>
<!-- Copy WEB-INF contents to staging -->
<copy todir="${build.webapp}/WEB-INF">
<fileset dir="${tools.struts}/lib" includes="validator-rules.xml"/>
</copy>
<!-- Copy other jars -->
<copy todir="${build.webapp}/WEB-INF/lib">
<fileset dir="${build.lib}" />
<fileset dir="./contrib/lib" />
<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" />
<!-- include custom jars -->
&custom-jars;
</copy>
<!-- Copy DTDs and TLDs -->
<copy todir="${build.webapp}/WEB-INF/tlds">
<fileset dir="${ro.tools}/lib" includes="*.tld"/>
</copy>
<!-- Copy web contents to staging, plus README files. -->
<copy todir="${build.webapp}">
<fileset dir="./web">
<include name="**/*"/>
<exclude name="**/codewright*/**"/>
<exclude name="**/*.bak"/>
<exclude name="**/*~"/>
</fileset>
</copy>
<!-- Copy docs to staging -->
<copy todir="${build.webapp}/roller-ui/docs">
<fileset dir="${basedir}/docs">
<include name="examples/**" />
<include name="userguide/**" />
<exclude name="installguide/**" />
<exclude name="**/old/**" />
</fileset>
</copy>
<!-- apply custom web task -->
&custom-web;
</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.webapp}/WEB-INF/dbscripts"/>
<!-- Create database creation script directory -->
<mkdir dir="${dbscripts}"/>
<copy todir="${dbscripts}">
<fileset dir="./metadata/database" includes="droptables.sql"/>
</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.webapp}/WEB-INF/dbscripts/mysql/"
outputFile="README.txt" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/postgresql.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="${build.webapp}/WEB-INF/dbscripts/postgresql/"
outputFile="README.txt" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/hsqldb.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="${build.webapp}/WEB-INF/dbscripts/hsqldb/"
outputFile="README.txt" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/derby.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="${build.webapp}/WEB-INF/dbscripts/derby/"
outputFile="README.txt" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/db2.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="${build.webapp}/WEB-INF/dbscripts/db2/"
outputFile="README.txt" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/oracle.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="${build.webapp}/WEB-INF/dbscripts/oracle/"
outputFile="README.txt" />
<texen
controlTemplate="control.vm"
contextProperties="${basedir}/metadata/database/mssql.properties"
templatePath="${basedir}/metadata/database/"
outputDirectory="${build.webapp}/WEB-INF/dbscripts/mssql/"
outputFile="README.txt" />
</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/velocity/">
<include name="weblog.vm" />
<include name="feeds.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="apache-binary,apache-sources">
</target>
<!-- ********************************************************************* -->
<!-- Create Binary Release -->
<!-- ********************************************************************* -->
<target name="stage-binary" depends="version-check" >
<!-- copy in release documents -->
<copy todir="${build.dist.binary}">
<fileset dir="${basedir}">
<include name="docs/**" />
<include name="CHANGES.txt" />
<include name="LICENSE.txt" />
<include name="NOTICE.txt" />
<include name="README.txt" />
<exclude name="**/codewright*/**"/>
<exclude name="docs/installguide/old/**"/>
<exclude name="docs/userguide/old/**"/>
<exclude name="docs/testing/**"/>
<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>
<!-- and of course we'll want the webapp too -->
<copy todir="${build.dist.binary}/webapp/roller">
<fileset dir="${build.webapp}" />
</copy>
</target>
<target name="dist-binary" depends="stage-binary">
<mkdir dir="${ro.dist}" />
<!-- Tar and GZip the binary release -->
<tar destfile="${ro.dist}/roller-${ro.version}.tar.gz"
longfile="gnu"
compression="gzip">
<tarfileset dir="${build.dist.binary}" prefix="${ro.name}-${ro.version}" />
</tar>
</target>
<target name="apache-binary" depends="stage-binary">
<mkdir dir="${ro.dist}" />
<!-- Tar and GZip the apache sources release -->
<tar destfile="${ro.dist}/${ro.name}-${ro.version}.tar.gz"
longfile="gnu"
compression="gzip">
<!-- don't include unshippables in apache release -->
<tarfileset dir="${build.dist.binary}"
prefix="${ro.name}-${ro.version}">
<exclude name="webapp/roller/WEB-INF/lib/mail.jar" />
<exclude name="webapp/roller/WEB-INF/lib/activation.jar" />
<exclude name="webapp/roller/WEB-INF/lib/hibernate3.jar" />
<exclude name="webapp/roller/WEB-INF/lib/asm.jar" />
<exclude name="webapp/roller/WEB-INF/lib/asm-attrs.jar" />
<exclude name="webapp/roller/WEB-INF/lib/cglib-2.1.3.jar" />
<exclude name="webapp/roller/WEB-INF/lib/dom4j-1.6.1.jar" />
<exclude name="webapp/roller/WEB-INF/lib/ehcache-1.1.jar" />
<exclude name="webapp/roller/WEB-INF/lib/jdbc2_0-stdext.jar" />
<exclude name="webapp/roller/WEB-INF/lib/jta.jar" />
</tarfileset>
</tar>
<zip destfile="${ro.dist}/${ro.name}-${ro.version}.zip">
<!-- don't include unshippables in apache release -->
<zipfileset dir="${build.dist.binary}"
prefix="${ro.name}-${ro.version}">
<exclude name="webapp/roller/WEB-INF/lib/mail.jar" />
<exclude name="webapp/roller/WEB-INF/lib/activation.jar" />
<exclude name="webapp/roller/WEB-INF/lib/hibernate3.jar" />
<exclude name="webapp/roller/WEB-INF/lib/asm.jar" />
<exclude name="webapp/roller/WEB-INF/lib/asm-attrs.jar" />
<exclude name="webapp/roller/WEB-INF/lib/cglib-2.1.3.jar" />
<exclude name="webapp/roller/WEB-INF/lib/dom4j-1.6.1.jar" />
<exclude name="webapp/roller/WEB-INF/lib/ehcache-1.1.jar" />
<exclude name="webapp/roller/WEB-INF/lib/jdbc2_0-stdext.jar" />
<exclude name="webapp/roller/WEB-INF/lib/jta.jar" />
</zipfileset>
</zip>
<!-- Tar and GZip the apache binary unshippables -->
<tar destfile="${ro.dist}/required-jars-roller-${ro.version}.tar.gz"
longfile="gnu"
compression="gzip">
<!-- only include unshippables -->
<tarfileset dir="${build.dist.binary}"
prefix="${ro.name}-${ro.version}">
<exclude name="webapp/roller/WEB-INF/lib/mail.jar" />
<exclude name="webapp/roller/WEB-INF/lib/activation.jar" />
<include name="webapp/roller/WEB-INF/lib/hibernate3.jar" />
<include name="webapp/roller/WEB-INF/lib/asm.jar" />
<include name="webapp/roller/WEB-INF/lib/asm-attrs.jar" />
<include name="webapp/roller/WEB-INF/lib/cglib-2.1.3.jar" />
<include name="webapp/roller/WEB-INF/lib/dom4j-1.6.1.jar" />
<include name="webapp/roller/WEB-INF/lib/ehcache-1.1.jar" />
<include name="webapp/roller/WEB-INF/lib/jdbc2_0-stdext.jar" />
<include name="webapp/roller/WEB-INF/lib/jta.jar" />
</tarfileset>
</tar>
<zip destfile="${ro.dist}/required-jars-roller-${ro.version}.zip" >
<zipfileset dir="${build.dist.binary}"
prefix="${ro.name}-${ro.version}">
<exclude name="webapp/roller/WEB-INF/lib/mail.jar" />
<exclude name="webapp/roller/WEB-INF/lib/activation.jar" />
<include name="webapp/roller/WEB-INF/lib/hibernate3.jar" />
<include name="webapp/roller/WEB-INF/lib/asm.jar" />
<include name="webapp/roller/WEB-INF/lib/asm-attrs.jar" />
<include name="webapp/roller/WEB-INF/lib/cglib-2.1.3.jar" />
<include name="webapp/roller/WEB-INF/lib/dom4j-1.6.1.jar" />
<include name="webapp/roller/WEB-INF/lib/ehcache-1.1.jar" />
<include name="webapp/roller/WEB-INF/lib/jdbc2_0-stdext.jar" />
<include name="webapp/roller/WEB-INF/lib/jta.jar" />
</zipfileset>
</zip>
</target>
<!-- ********************************************************************* -->
<!-- Create Source Release -->
<!-- ********************************************************************* -->
<target name="stage-sources" depends="version-check">
<copy todir="${build.dist.sources}">
<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="NOTICE.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>
</target>
<target name="dist-sources" depends="stage-sources">
<mkdir dir="${ro.dist}" />
<!-- Tar and GZip the sources release -->
<tar destfile="${ro.dist}/roller-src-${ro.version}.tar.gz"
longfile="gnu"
compression="gzip">
<tarfileset dir="${build.dist.sources}" prefix="${ro.name}-src-${ro.version}" />
</tar>
</target>
<target name="apache-sources" depends="stage-sources">
<mkdir dir="${ro.dist}" />
<!-- Tar and GZip the apache binary release -->
<tar destfile="${ro.dist}/${ro.name}-src-${ro.version}.tar.gz"
longfile="gnu"
compression="gzip">
<!-- don't include unshippables in apache release -->
<tarfileset dir="${build.dist.sources}"
prefix="${ro.name}-src-${ro.version}">
<exclude name="**/hibernate-3.1/**" />
<exclude name="**/activation.jar" />
<exclude name="**/mail.jar" />
<exclude name="**/ejb-1.1.jar" />
</tarfileset>
</tar>
<zip destfile="${ro.dist}/${ro.name}-src-${ro.version}.zip">
<!-- don't include unshippables in apache release -->
<zipfileset dir="${build.dist.sources}"
prefix="${ro.name}-src-${ro.version}">
<exclude name="**/hibernate-3.1/**" />
<exclude name="**/activation.jar" />
<exclude name="**/mail.jar" />
<exclude name="**/ejb-1.1.jar" />
</zipfileset>
</zip>
<!-- Tar and GZip the apache sources unshippables -->
<tar destfile="${ro.dist}/required-jars-roller-src-${ro.version}.tar.gz"
longfile="gnu"
compression="gzip">
<!-- only include unshippables -->
<tarfileset dir="${build.dist.sources}"
prefix="${ro.name}-src-${ro.version}">
<include name="**/hibernate-3.1/**" />
<include name="**/activation.jar" />
<include name="**/mail.jar" />
<include name="**/ejb-1.1.jar" />
</tarfileset>
</tar>
<zip destfile="${ro.dist}/required-jars-roller-src-${ro.version}.zip">
<!-- only include unshippables -->
<zipfileset dir="${build.dist.sources}"
prefix="${ro.name}-src-${ro.version}">
<include name="**/hibernate-3.1/**" />
<include name="**/activation.jar" />
<include name="**/mail.jar" />
<include name="**/ejb-1.1.jar" />
</zipfileset>
</zip>
</target>
<target name="version-check" if="java15.present" >
<fail message="ERROR: DON'T BUILD RELEASES WITH JAVA 1.5 (yet)" />
</target>
<!-- ********************************************************************* -->
<!-- TEST targets -->
<!-- ********************************************************************* -->
<target name="tests" depends="build-tests,test-business,test-presentation,test-utils" description="All unit tests" >
</target>
<target name="clean-tests" description="Removes test build and result artifacts and reports">
<delete dir="${build.tests}"/>
<delete dir="${ro.build}/build/reports"/>
</target>
<target name="build-tests" depends="build-web" description="Build unit tests">
<mkdir dir="${build.tests}" />
<mkdir dir="${build.tests}/logs" />
<mkdir dir="${build.compile.tests}" />
<!-- compile all test classes -->
<javac destdir="${build.compile.tests}"
includeantruntime="false"
debug="${build.debug}"
source="${build.sourcelevel}"
deprecation="${build.deprecation}">
<src path="${ro.tests}" />
&custom-src-tests;
<classpath>
<path refid="tests.path"/>
<pathelement location="${ro.tools}/buildtime/ant-1.6.2/ant.jar"/>
&custom-jars;
</classpath>
</javac>
<!-- Copy test resources -->
<copy todir="${build.compile.tests}">
<fileset dir="${ro.tests}"
excludes="**/*.java, **/*.html, **/*.png" />
</copy>
<!-- register Ant tasks that were just built -->
<taskdef name="startdb" classname="org.apache.roller.ant.StartHsqldbTask"
classpath="${ro.tools}/buildtime/hsqldb.jar;${build.compile.tests}" />
<taskdef name="stopdb" classname="org.apache.roller.ant.StopHsqldbTask"
classpath="${ro.tools}/buildtime/hsqldb.jar;${build.compile.tests}" />
<!--
Copy web config files to ${build.tests} to make them available for testing.
This includes the WEB-INF directory, minus jsps
-->
<mkdir dir="${build.tests}/WEB-INF" />
<copy todir="${build.tests}/WEB-INF">
<fileset dir="${basedir}/web/WEB-INF">
<exclude name="jsps/**" />
</fileset>
</copy>
<copy todir="${build.tests}/WEB-INF/classes">
<fileset dir="${basedir}/metadata/database/hibernate/"
includes="hibernate.cfg.xml" />
</copy>
<!--
Copy custom testing files which will overwrite some config files
-->
<copy todir="${build.tests}">
<fileset dir="${basedir}/testdata" />
</copy>
<!-- allow for custom build work -->
</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"/>
<antcall target="start-db" />
<antcall target="init-db" />
&custom-pre-dbtest;
<junit fork="true" dir="${build.tests}" printsummary="on" showOutput="false">
<classpath>
<path refid="tests.run.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.compile.tests}">
<include name="org/apache/roller/business/BookmarkTest.class"/>
<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/RefererTest.class"/>
<include name="org/apache/roller/business/HitCountTest.class"/>
<include name="org/apache/roller/business/TaskLockTest.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;
<antcall target="stop-db" />
<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"/>
<antcall target="start-db" />
<antcall target="init-db" />
<junit fork="true" dir="${build.tests}" printsummary="on" showOutput="false">
<classpath>
<path refid="tests.run.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}/presentation/xml">
<fileset dir="${build.compile.tests}">
<include name="org/apache/roller/ui/UIPluginManagerTest.class"/>
<include name="org/apache/roller/ui/authoring/struts/actions/BookmarksActionTest.class"/>
<include name="org/apache/roller/ui/authoring/struts/actions/WeblogEntryActionTest.class"/>
<include name="org/apache/roller/webservices/xmlrpc/RollerXmlRpcServerTest.class"/>
<include name="org/apache/roller/ui/rendering/velocity/plugins/smileys/SmileysTest.class"/>
</fileset>
</batchtest>
</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>
<antcall target="stop-db" />
</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}" showOutput="true">
<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="tests.run.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">
<mkdir dir="${build.reports}/webservices/adminapi/sdk/xml"/>
<mkdir dir="${build.reports}/webservices/adminapi/sdk/html"/>
<junit fork="true" dir="${build.tests}" printsummary="on" showOutput="true">
<syspropertyset>
<propertyref builtin="commandline"/>
</syspropertyset>
<classpath>
<path refid="tests.run.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">
<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="tests.run.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="tests.run.path"/>
</classpath>
</java>
</target>
<!-- ********************************************************************* -->
<!-- EXAMPLE targets -->
<!-- ********************************************************************* -->
<target name="deploy-tomcat" depends="stage-webapp" >
<ant dir="./personal" target="deploy-tomcat" />
</target>
<target name="deploy-resin" depends="stage-webapp" >
<ant dir="./personal" target="deploy-resin" />
</target>
<target name="deploy-isp" depends="stage-webapp" >
<ant dir="./personal" target="deploy-isp" />
</target>
<target name="clean-isp">
<ant dir="./personal" target="clean-isp" />
</target>
<target name="official-release" depends="tests,apache-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-webapp">
<mkdir dir="${ro.build}/jspc"/>
<taskdef classname="org.apache.jasper.JspC" name="jasper2" >
<classpath refid="jasper.path"/>
</taskdef>
<jasper2 validateXml="false"
uriroot="${build.webapp}"
webXmlFragment="${build.webapp}/WEB-INF/generated_web.xml"
outputDir="${ro.build}/jspc" />
<mkdir dir="${ro.build}/jspc.classes"/>
<javac source="${build.sourcelevel}" 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.webapp}/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.webapp}/WEB-INF/dbscripts/hsqldb/createdb.sql"
classpath="${ro.tools}/buildtime/hsqldb.jar" />
&custom-pre-dbtest;
</target>
<target name="start-db" description="Starts built-in database">
<startdb database="${build.tests}/testdb" port="3219" />
<!--
Not sure we need that custom 'startdb' task if this plain old Ant works:
<java classname="org.hsqldb.Server"
fork="yes" spawn="true" 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">
<stopdb port="3219"/>
<!--
This below code does the same thing as 'stopdb' but the 'sql' task throws
an exception when HSQLDB disconnects and that causes a build failure, so
for now I'm keeping the custom 'startdb' and 'stopdb' Ant tasks.
<sql driver="org.hsqldb.jdbcDriver" onerror="continue"
url="jdbc:hsqldb:hsql://localhost:3219"
userid="sa" password=""
classpath="${ro.tools}/buildtime/hsqldb.jar" >
SHUTDOWN
</sql>
-->
</target>
<!-- ********************************************************************* -->
<!-- Experimental Admin API SDK -->
<!-- ********************************************************************* -->
<!-- build standalone aapp-sdk.jar, for external consumption -->
<target name="aapp-sdk" depends="build">
<mkdir dir="${build.lib}"/>
<jar destfile="${build.lib}/roller-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>
</project>