helma/build/build.xml

294 lines
14 KiB
XML

<?xml version="1.0"?>
<!-- ======================================================================= -->
<!-- Hop build file -->
<!-- ======================================================================= -->
<project name="Hop" default="main" basedir=".">
<!-- =================================================================== -->
<!-- Initializes some variables -->
<!-- =================================================================== -->
<target name="init">
<property name="Name" value="helma"/>
<property name="year" value="1998-2002"/>
<property name="version" value="1.2pre3"/>
<property name="project" value="helma"/>
<property name="build.compiler" value="classic"/>
<property name="home.dir" value=".."/>
<!-- values for building a snapshot -->
<property name="snapshot.src" value="${home.dir}/src/hop"/>
<property name="snapshot.classes" value="${home.dir}/classes"/>
<property name="snapshot.lib" value="${home.dir}/lib"/>
<!-- values for building the distribution -->
<property name="build.work" value="${home.dir}/work"/>
<property name="build.checkout" value="${build.work}/checkout"/>
<property name="build.src" value="${build.checkout}/hop"/>
<property name="build.lib" value="${build.checkout}/hopbuild/lib"/>
<property name="build.classes" value="${build.work}/classes"/>
<property name="build.docs" value="${build.work}/docs"/>
<property name="build.javadocs" value="${build.docs}/api"/>
<property name="final.name" value="${project}-${version}"/>
<property name="final.dir" value="${build.work}/${final.name}"/>
<property name="cvs.root" value=":pserver:anonymous@coletta.helma.at:/opt/cvs"/>
<property name="jar.name" value="helma"/>
<property name="debug" value="off"/>
<property name="optimize" value="on"/>
<property name="deprecation" value="off"/>
<tstamp/>
<filter token="year" value="${year}"/>
<filter token="version" value="${version}"/>
<filter token="date" value="${TODAY}"/>
<!-- JDK1.1 collections support -->
<property name="coll.import" value="com.sun.java.util.collections"/>
<available classname="${coll.import}.Collection" property="coll.present"/>
</target>
<!-- =================================================================== -->
<!-- Copies the source code to the build directory and does filtering -->
<!-- =================================================================== -->
<target name="checkout" depends="init">
<mkdir dir="${build.src}"/>
<mkdir dir="${build.checkout}"/>
<cvs cvsRoot="${cvs.root}" package="hop" dest="${build.checkout}"/>
<cvs cvsRoot="${cvs.root}" package="hopbuild" dest="${build.checkout}"/>
<cvs cvsRoot="${cvs.root}" package="apps/base" dest="${build.checkout}"/>
<cvs cvsRoot="${cvs.root}" package="apps/hopblog" dest="${build.checkout}"/>
<cvs cvsRoot="${cvs.root}" package="apps/himp" dest="${build.checkout}"/>
<cvs cvsRoot="${cvs.root}" package="apps/bloggerapi" dest="${build.checkout}"/>
<cvs cvsRoot="${cvs.root}" package="apps/lillebror" dest="${build.checkout}"/>
<cvs cvsRoot="${cvs.root}" package="apps/manage" dest="${build.checkout}"/>
<cvs cvsRoot="${cvs.root}" package="apps/rss" dest="${build.checkout}"/>
</target>
<!-- =================================================================== -->
<!-- Does replacement on files for dealing with collections. -->
<!-- XXX The efficiency could be improved here; all replacements should -->
<!-- XXX happen during one read/write phase and only for files that have -->
<!-- XXX changed. -->
<!-- =================================================================== -->
<target name="collections" if="coll.present" depends="init">
<replace dir="${build.src}/helma" includes="**"
token="java.util.Collection" value="${coll.import}.Collection"/>
<replace dir="${build.src}/helma" includes="**"
token="java.util.Map" value="${coll.import}.Map"/>
<replace dir="${build.src}/helma" includes="**"
token="java.util.HashMap" value="${coll.import}.HashMap"/>
<replace dir="${build.src}/helma" includes="**"
token="java.util.List" value="${coll.import}.List"/>
<replace dir="${build.src}/helma" includes="**"
token="java.util.LinkedList" value="${coll.import}.LinkedList"/>
<replace dir="${build.src}/helma" includes="**"
token="java.util.ArrayList" value="${coll.import}.ArrayList"/>
<replace dir="${build.src}/helma" includes="**"
token="java.util.Set" value="${coll.import}.Set"/>
<replace dir="${build.src}/helma" includes="**"
token="java.util.HashSet" value="${coll.import}.HashSet"/>
<replace dir="${build.src}/helma" includes="**"
token="java.util.Iterator" value="${coll.import}.Iterator"/>
<!-- The following replace handles the "import java.util.*" case by -->
<!-- adding an "import com.sun.java.util.collections.*" after it. -->
<!-- BTW, \u000a is the Unicode escape for a new line. (jhunter) -->
<replace dir="${build.src}/helma/framework/core" includes="**"
token="java.util.*"
value="java.util.*;\u000aimport ${coll.import}.*"/>
<replace dir="${build.src}/helma/objectmodel" includes="**"
token="java.util.*"
value="java.util.*;\u000aimport ${coll.import}.*"/>
</target>
<!-- =================================================================== -->
<!-- Compiles the source directory -->
<!-- =================================================================== -->
<target name="compile" depends="init">
<mkdir dir="${build.classes}"/>
<javac srcdir="${build.src}"
destdir="${build.classes}"
debug="${debug}"
deprecation="${deprecation}"
optimize="${optimize}">
<classpath>
<fileset dir="${build.lib}">
<include name="**/*.jar" />
</fileset>
<pathelement path="${classpath}" />
</classpath>
</javac>
<rmic classname="helma.framework.core.Application" base="${build.classes}"/>
<rmic classname="helma.image.Server" base="${build.classes}"/>
<rmic classname="helma.image.RemoteImage" base="${build.classes}"/>
</target>
<!-- =================================================================== -->
<!-- Creates a .jar file -->
<!-- =================================================================== -->
<target name="jar" depends="compile">
<jar jarfile="${build.work}/${jar.name}-${DSTAMP}.jar"
basedir="${build.classes}"
excludes="**/package.html"/>
</target>
<!-- =================================================================== -->
<!-- Creates the API documentation -->
<!-- =================================================================== -->
<target name="javadocs" depends="init">
<mkdir dir="${build.javadocs}"/>
<javadoc packagenames="helma.*"
sourcepath="${build.src}"
destdir="${build.javadocs}"
author="false"
private="false"
version="false"
windowtitle="${Name} ${version} API"
doctitle="${Name} ${version} API"
bottom="Copyright &#169; ${year} Helma.org. All Rights Reserved.">
<classpath>
<fileset dir="${build.lib}">
<include name="**/*.jar" />
</fileset>
<pathelement path="${classpath}" />
</classpath>
</javadoc>
</target>
<!-- =================================================================== -->
<!-- Get the documentation -->
<!-- =================================================================== -->
<target name="helmadocs" depends="init">
<get src="http://www.helma.org/docs/reference/print"
dest="${build.docs}/reference.html"
ignoreerrors="true"
/>
</target>
<!-- =================================================================== -->
<!-- Package -->
<!-- =================================================================== -->
<target name="package" depends="init, checkout, jar, javadocs, helmadocs">
<mkdir dir="${final.dir}"/>
<mkdir dir="${final.dir}/src/hop"/>
<copy todir="${final.dir}/src/hop">
<fileset dir="${build.checkout}/hop" />
</copy>
<copy todir="${final.dir}/build">
<fileset dir="${build.checkout}/hopbuild/build"/>
</copy>
<chmod file="${final.dir}/build/build.sh" perm="755"/>
<copy todir="${final.dir}/docs">
<fileset dir="${build.docs}"/>
</copy>
<copy todir="${final.dir}/lib">
<fileset dir="${build.checkout}/hopbuild/lib"/>
</copy>
<copy file="${build.work}/${jar.name}-${DSTAMP}.jar" tofile="${final.dir}/lib/helma.jar"/>
<copy todir="${final.dir}">
<fileset dir="${build.checkout}/hopbuild/skeleton" excludes="**/CVS"/>
</copy>
<chmod file="${final.dir}/hop.sh" perm="755"/>
<copy todir="${final.dir}/apps">
<fileset dir="${build.checkout}/apps" excludes="**/CVS,manage/**"/>
</copy>
<mkdir dir="${final.dir}/apps/manage"/>
<zip zipfile="${final.dir}/apps/manage/manage.zip" basedir="${build.checkout}/apps/manage/" includes="**" excludes="**/properties,readme/**" />
<copy todir="${final.dir}/apps/manage">
<fileset dir="${build.checkout}/apps/manage" includes="app.properties,class.properties,readme.txt"/>
</copy>
</target>
<!-- =================================================================== -->
<!-- Packages the distribution with ZIP -->
<!-- =================================================================== -->
<target name="package-zip" depends="package">
<zip zipfile="${home.dir}/${Name}-${version}.zip" basedir="${build.work}" includes="**/${final.name}/**"/>
</target>
<!-- =================================================================== -->
<!-- Packages the distribution with TAR-GZIP -->
<!-- =================================================================== -->
<target name="package-tgz" depends="package">
<tar tarfile="${build.work}/${Name}-${version}.tar" basedir="${build.work}/${final.name}" excludes="**">
<tarfileset dir="${build.work}" mode="755">
<include name="${final.name}/hop.sh"/>
<include name="${final.name}/build/build.sh"/>
</tarfileset>
<tarfileset dir="${build.work}">
<include name="${final.name}/**"/>
<exclude name="${final.name}/hop.sh"/>
<exclude name="${final.name}/build/build.sh"/>
</tarfileset>
</tar>
<gzip zipfile="${home.dir}/${Name}-${version}.tar.gz" src="${build.work}/${Name}-${version}.tar"/>
</target>
<!-- =================================================================== -->
<!-- Packages the distribution with ZIP and TAR-GZIP -->
<!-- =================================================================== -->
<target name="package-all" depends="package-zip, package-tgz">
</target>
<!-- =================================================================== -->
<!-- Compiles the source directory for a snapshot -->
<!-- =================================================================== -->
<target name="snapshotcompile" depends="init">
<mkdir dir="${snapshot.classes}"/>
<javac srcdir="${snapshot.src}"
destdir="${snapshot.classes}"
debug="${debug}"
deprecation="${deprecation}"
optimize="${optimize}">
<classpath>
<fileset dir="${snapshot.lib}">
<include name="**/*.jar" />
<exclude name="**/helma*.jar" />
</fileset>
<pathelement path="${classpath}" />
</classpath>
</javac>
<rmic classname="helma.framework.core.Application" base="${snapshot.classes}"/>
<rmic classname="helma.image.Server" base="${snapshot.classes}"/>
<rmic classname="helma.image.RemoteImage" base="${snapshot.classes}"/>
</target>
<!-- =================================================================== -->
<!-- Creates a .jar file for a snapshot -->
<!-- =================================================================== -->
<target name="snapshot" depends="snapshotcompile">
<jar jarfile="${snapshot.lib}/${jar.name}-${DSTAMP}.jar"
basedir="${snapshot.classes}"
excludes="**/package.html"/>
</target>
<!-- =================================================================== -->
<!-- These are just some tests -->
<!-- =================================================================== -->
<target name="ftp-test" depends="">
<ftp server="piefke.helma.at"
userid="anonymous"
password="tobi@helma.at">
<fileset dir="${home.dir}">
<include name="${Name}-${version}.zip,${Name}-${version}.tar.gz"/>
</fileset>
</ftp>
</target>
<target name="test1" depends="init">
<mkdir dir="${build.checkout}"/>
<cvs cvsRoot="${cvs.root}" package="apps/manage" dest="${build.checkout}"/>
<zip zipfile="../manage.zip" basedir="${build.checkout}/apps/manage/" includes="**"/>
</target>
</project>