<?xml version="1.0"?> <!-- ======================================================================= --> <!-- Hop build file for building with ant --> <!-- ======================================================================= --> <!-- --> <!-- Usage: --> <!-- ant [-buildfile build.xml] target --> <!-- --> <!-- Available targets: --> <!-- checkout copies helma source code from cvs --> <!-- fullcheckout copies helma source code and applications from cvs --> <!-- compile compiles helma source code to java classes --> <!-- jar compiles helma source code to java archives --> <!-- javadocs creates api documentation for helma java classes --> <!-- helmadocs fetches printable user reference for helma --> <!-- package creates directory with compiled helma and apps --> <!-- fullpackage creates directory with compiled helma, docs and apps --> <!-- package-zip creates zipped file of fullpackage --> <!-- package-tgz creates tared and gzipped file of fullpackage --> <!-- package-all creates fullpackage, package-zip and package-tgz --> <!-- snapshotcompile compiles current helma snapshot to java classes --> <!-- snapshot compiles current helma snapshot to java archive --> <!-- app-package creates a zipped file of an application from cvs --> <!-- antclick creates package incl. helma, Antville and manage app --> <!-- cleanup removes temporary directories --> <!-- fullcleanup removes all directories created by ant --> <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"/> <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}"/> </target> <!-- =================================================================== --> <!-- Copies the source code to the src directroy --> <!-- =================================================================== --> <target name="checkout" depends="init"> <mkdir dir="${snapshot.src}"/> <cvs cvsRoot="${cvs.root}" package="hop" dest="${snapshot.src}"/> </target> <!-- =================================================================== --> <!-- Copies the everything from cvs that's needed to build a full --> <!-- helma distribution --> <!-- =================================================================== --> <target name="fullcheckout" depends="init"> <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/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}"/> </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 © ${year} Helma.org. All Rights Reserved."> <classpath> <fileset dir="${build.lib}"> <include name="**/*.jar" /> </fileset> <pathelement path="${classpath}" /> </classpath> </javadoc> </target> <!-- =================================================================== --> <!-- Get the documentation (currently fails due to request time-out) --> <!-- =================================================================== --> <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, fullcheckout, jar"> <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}/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,extras/**"/> </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> <!-- =================================================================== --> <!-- Full Package (includes documentation) --> <!-- =================================================================== --> <target name="fullpackage" depends="package, javadocs"> <copy todir="${final.dir}/docs"> <fileset dir="${build.docs}"/> </copy> </target> <!-- =================================================================== --> <!-- Packages the distribution with ZIP --> <!-- =================================================================== --> <target name="package-zip" depends="fullpackage"> <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="fullpackage"> <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}/hop" 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> <!-- =================================================================== --> <!-- Checks out and zips an application defined by -Dapplication=appName --> <!-- e.g. ant [-buildfile build.xml] -Dapplication=helmaorg --> <!-- =================================================================== --> <target name="app-package" depends="init"> <mkdir dir="${build.checkout}"/> <cvs cvsRoot="${cvs.root}" package="apps/${application}" dest="${build.checkout}"/> <zip zipfile="../${application}.zip" basedir="${build.checkout}/apps/${application}/" includes="**"/> </target> <!-- =================================================================== --> <!-- Make Antclick package (helma plus Antville and manage apps) --> <!-- =================================================================== --> <target name="antclick" depends="package"> <property name="antclick.dir" value="${build.work}/antclick"/> <mkdir dir="${antclick.dir}"/> <cvs cvsRoot="${cvs.root}" package="apps/antville" dest="${build.checkout}"/> <copy todir="${antclick.dir}/"> <fileset dir="${final.dir}" includes="db.properties,server.properties,*.txt,lib/**,db/antville.*"/> </copy> <copy todir="${antclick.dir}/apps/"> <fileset dir="${build.checkout}/apps" excludes="antville/images.zip,antville/*.sql,antville/db.properties" includes="antville/**"/> </copy> <copy todir="${antclick.dir}/apps/"> <fileset dir="${final.dir}/apps" includes="manage/**"/> </copy> <copy todir="${antclick.dir}/"> <fileset dir="${build.checkout}/hopbuild/skeleton/extras" includes="apps.properties,hop.bat,hop.sh"/> </copy> <copy todir="${antclick.dir}/lib/"> <fileset dir="${build.checkout}/hopbuild/skeleton/extras" includes="hsqldb-1.7RC5Pre2-patched.jar"/> </copy> <mkdir dir="${antclick.dir}/static/antville"/> <unzip src="${build.checkout}/apps/antville/images.zip" dest="${antclick.dir}/static/antville"> <patternset> <include name="**"/> </patternset> </unzip> <copy todir="${antclick.dir}/apps/antville/"> <fileset dir="${build.checkout}/hopbuild/skeleton/extras" includes="db.properties"/> </copy> <chmod file="${antclick.dir}/hop.sh" perm="755"/> <zip zipfile="${home.dir}/antclick.zip" basedir="${build.work}/" includes="antclick/**"/> <tar tarfile="${build.work}/antclick.tar"> <tarfileset dir="${antclick.dir}" mode="755"> <include name="hop.sh"/> </tarfileset> <tarfileset dir="${antclick.dir}"> <include name="**"/> <exclude name="hop.sh"/> </tarfileset> </tar> <gzip zipfile="${home.dir}/antclick.tgz" src="${build.work}/antclick.tar"/> </target> <!-- =================================================================== --> <!-- Remove temporary directories --> <!-- =================================================================== --> <target name="cleanup" depends="init"> <delete dir="${build.classes}"/> <delete dir="${final.dir}"/> </target> <!-- =================================================================== --> <!-- Remove all directories created by ant --> <!-- =================================================================== --> <target name="fullcleanup" depends="init"> <delete dir="${build.work}"/> <delete dir="${snapshot.src}"/> </target> <!-- =================================================================== --> <!-- These are just some test targets --> <!-- =================================================================== --> <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> <target name="test2" depends="init"> <property name="antclick.dir" value="${build.work}/antclick"/> <copy todir="${antclick.dir}/apps/antville/"> <fileset dir="${build.checkout}/hopbuild/skeleton/extras" includes="db.properties"/> </copy> </target> </project>