<?xml version="1.0"?> <project name="Helma" default="usage" basedir="."> <!-- =================================================================== --> <!-- Initializes some variables --> <!-- =================================================================== --> <target name="init"> <property name="Name" value="helma"/> <property name="year" value="1998-${year}"/> <property name="version" value="1.7.3"/> <property name="project" value="helma"/> <property name="home.dir" value="."/> <property name="build.dir" value="${home.dir}/build"/> <property name="build.src" value="${home.dir}/src"/> <property name="build.lib" value="${home.dir}/lib"/> <property name="build.classes" value="${home.dir}/classes"/> <property name="build.docs" value="${home.dir}/docs"/> <property name="build.javadocs" value="${home.dir}/docs/api"/> <property name="build.externals" value="${build.dir}/externals"/> <property name="build.work" value="${home.dir}/work"/> <property name="build.dist" value="${home.dir}/dist"/> <property name="jar.name" value="${project}"/> <property name="package.name" value="${project}-${version}"/> <property name="core.name" value="${project}-core-${version}"/> <property name="debug" value="on"/> <property name="optimize" value="on"/> <property name="deprecation" value="off"/> <property name="build.jsdocs" value="${home.dir}/docs/framework"/> <property name="jsdoc" value="${home.dir}/work/reference/templates/jsdoc.pl"/> <path id="build.class.path"> <fileset dir="${home.dir}/lib"> <exclude name="**/helma*.jar" /> <include name="**/*.jar" /> </fileset> </path> <tstamp/> <filter token="year" value="${year}"/> <filter token="version" value="${version}"/> <filter token="date" value="${TODAY}"/> </target> <!-- =================================================================== --> <!-- Help on usage --> <!-- =================================================================== --> <target name="help" depends="usage" /> <target name="usage"> <echo message=""/> <echo message=""/> <echo message="Helma build instructions"/> <echo message="-------------------------------------------------------------"/> <echo message=""/> <echo message=" available targets are:"/> <echo message=""/> <echo message=" compile --> compiles the source code to ./classes"/> <echo message=" jar --> generates the ./lib/helma-YYYYMMDD.jar file"/> <echo message=" javadocs --> generates the API docs"/> <echo message=" jsdocs --> generates the framework docs"/> <!--<echo message=" docs -> tries to retrieve the HTML documentation "/> --> <!--<echo message=" (may need proxy settings in startscript)"/> --> <echo message=" package --> generates the distribution (zip and tar.gz)"/> <echo message=" app [name] --> gets an application from svn and zips it"/> <echo message=" module [name] --> gets a module from svn and zips it"/> <echo message=" core --> generates core for production updates (zip and tar.gz)"/> <echo message=" clean --> clean up temporary build directories and files"/> <echo message=""/> <echo message=" usage --> provides help on using the build tool (default)"/> <echo message=""/> <echo message=" See comments inside the build.xml file for more details."/> <echo message="-------------------------------------------------------------"/> <echo message=""/> <echo message=""/> </target> <!-- =================================================================== --> <!-- Compiles the source directory --> <!-- =================================================================== --> <target name="compile" depends="init"> <mkdir dir="${build.classes}"/> <!-- copy the imageio file --> <copy file="${build.src}/META-INF/services/javax.imageio.spi.ImageWriterSpi" todir="${build.classes}/META-INF/services"/> <!-- copy helma db style sheet --> <copy file="${build.src}/helma/objectmodel/dom/helma.xsl" todir="${build.classes}/helma/objectmodel/dom" /> <!-- copy source files over to work directory --> <delete dir="${build.work}/src" quiet="true"/> <mkdir dir="${build.work}/src" /> <copy todir="${build.work}/src" overwrite="true"> <fileset dir="${build.src}" includes="**/*.java"/> </copy> <replace file="${build.work}/src/helma/main/Server.java" token="__builddate__" value="${TODAY}"/> <javac srcdir="${build.work}/src" source="1.5" target="1.5" destdir="${build.classes}" debug="${debug}" deprecation="${deprecation}" optimize="${optimize}" includeAntRuntime="no"> <classpath refid="build.class.path" /> </javac> <delete dir="${build.work}/src"/> </target> <!-- =================================================================== --> <!-- Creates a helma.jar file (snapshot) in the lib-directory --> <!-- =================================================================== --> <target name="jar" depends="compile"> <jar jarfile="${build.lib}/${jar.name}-${DSTAMP}.jar" basedir="${build.classes}" excludes="**/package.html,**/main/launcher/**"/> <jar jarfile="${home.dir}/launcher.jar" basedir="${build.classes}" includes="**/main/launcher/**" manifest="${build.src}/helma/main/launcher/manifest.txt"/> <!-- Copy timestamped helma jar file to lib/helma.jar --> <copy file="${build.lib}/${jar.name}-${DSTAMP}.jar" tofile="${build.lib}/${jar.name}.jar"/> </target> <!-- =================================================================== --> <!-- Creates the javadoc 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." classpathref="build.class.path" /> </target> <!-- =================================================================== --> <!-- Create the jsdoc Framework documentation --> <!-- =================================================================== --> <target name="jsdocs" depends="init, package-modules"> <!-- add a copy of the reference --> <mkdir dir="${build.work}/reference"/> <copy todir="${build.work}/reference"> <fileset dir="${build.externals}/reference"/> </copy> <!-- add a copy of the modules --> <mkdir dir="${build.work}/reference/modules"/> <copy todir="${build.work}/reference/modules"> <fileset dir="${build.externals}/modules/"/> </copy> <mkdir dir="${build.jsdocs}"/> <java dir="${home.dir}" fork="true" jar="${build.lib}/rhino.jar"> <sysproperty key="jsdoc.dir" value="work/reference"/> <arg value="work/reference/app/run.js"/> <arg value="-t=work/reference/templates"/> <arg value="-d=docs/framework"/> <arg value="-r=3"/> <arg value="work/reference/coreEnvironment"/> <arg value="work/reference/coreExtensions"/> <arg value="work/reference/modules"/> </java> <delete dir="${build.work}/reference" /> </target> <!-- =================================================================== --> <!-- Get the documentation (currently can fail due to request time-out --> <!-- or missing support for proxies) --> <!-- =================================================================== --> <!-- <target name="docs" depends="init"> --> <!-- <get src="http://www.helma.org/docs/reference/print" --> <!-- dest="${build.docs}/reference.html" --> <!-- ignoreerrors="true" --> <!-- /> --> <!-- </target> --> <!-- =================================================================== --> <!-- Builds and packages only the core for the deployment and updating --> <!-- of production environments --> <!-- =================================================================== --> <target name="core" depends="init, jar"> <mkdir dir="${build.work}"/> <!-- copy all libraries except helma-YYYYMMDD.jar --> <copy todir="${build.work}/lib"> <fileset dir="${home.dir}/lib"> <exclude name="**/helma-*.jar" /> <include name="**/*.jar" /> </fileset> </copy> <!-- copy the launcher jar and start files--> <copy file="${home.dir}/launcher.jar" todir="${build.work}/lib"/> <!-- create lib/ext directory --> <mkdir dir="${build.work}/lib/ext"/> <!-- copy the license files --> <copy todir="${build.work}/licenses"> <fileset dir="${home.dir}/licenses" excludes="**/.svn**"/> </copy> <copy file="${home.dir}/license.txt" todir="${build.work}/licenses"/> <!-- zip up the whole thing --> <antcall target="package-zip"> <param name="filename" value="${core.name}"/> </antcall> <antcall target="package-tgz"> <param name="filename" value="${core.name}"/> </antcall> <!-- clean up --> <delete dir="${build.work}"/> </target> <!-- =================================================================== --> <!-- Creates the full helma distribution --> <!-- =================================================================== --> <target name="package" depends="init"> <mkdir dir="${build.work}"/> <!-- checkout the demo apps (and zip manage-app) --> <antcall target="package-apps" /> <!-- generate the framework and modules documentation --> <antcall target="jsdocs" /> <!-- create the main part of helma --> <antcall target="package-raw"> <param name="distribution" value="main" /> </antcall> <chmod perm="755"> <fileset dir="${build.work}"> <include name="start.sh"/> </fileset> </chmod> <!-- zip up the whole thing --> <antcall target="package-zip"> <param name="filename" value="${package.name}"/> </antcall> <antcall target="package-tgz"> <param name="filename" value="${package.name}"/> </antcall> <!-- make the src distributions --> <antcall target="javadocs"/> <antcall target="package-src-zip"> <param name="filename" value="${package.name}"/> </antcall> <antcall target="package-src-tgz"> <param name="filename" value="${package.name}"/> </antcall> <!-- clean up --> <delete dir="${build.work}"/> </target> <!-- =================================================================== --> <!-- Compile Helma and prepare the skeleton in a temporary directory. --> <!-- Used by package . --> <!-- =================================================================== --> <target name="package-raw" depends="init, jar"> <!-- copy the framework (apps.props, server.props, hop/db, hop/static) --> <copy todir="${build.work}"> <fileset dir="${build.dir}/${distribution}" excludes="**/.svn**"/> </copy> <!-- copy the launcher jar and start files --> <copy file="${home.dir}/launcher.jar" todir="${build.work}/"/> <copy file="${home.dir}/start.sh" todir="${build.work}"/> <copy file="${home.dir}/start.bat" todir="${build.work}"/> <!-- copy README.txt --> <copy file="${home.dir}/README.txt" todir="${build.work}/"/> <!-- copy the whole docs-directory --> <copy todir="${build.work}/docs"> <fileset dir="${build.docs}"/> </copy> <!-- copy all libraries except helma-YYYYMMDD.jar --> <copy todir="${build.work}/lib"> <fileset dir="${home.dir}/lib"> <exclude name="**/helma-*.jar" /> <include name="**/*.jar" /> </fileset> </copy> <!-- create lib/ext directory --> <mkdir dir="${build.work}/lib/ext"/> <!-- copy the license files --> <copy todir="${build.work}/licenses"> <fileset dir="${home.dir}/licenses" excludes="**/.svn**"/> </copy> <copy file="${home.dir}/license.txt" todir="${build.work}/licenses"/> <!-- copy the scripts directory --> <copy todir="${build.work}/scripts"> <fileset dir="${home.dir}/scripts" excludes="**/.svn**"/> </copy> <!-- zip the sourcecode --> <!-- mkdir dir="${build.work}/src"/> <tar tarfile="${build.work}/src/helma-src.tar" basedir="${build.src}/"> <tarfileset dir="${build.src}"> <include name="${build.src}/**"/> </tarfileset> </tar> <gzip zipfile="${build.work}/src/helma-src.tar.gz" src="${build.work}/src/helma-src.tar"/> <delete file="${build.work}/src/helma-src.tar"/ --> </target> <!-- =================================================================== --> <!-- Checkout demo apps, put them in work directory and zip manage app --> <!-- =================================================================== --> <target name="package-apps" depends="init"> <mkdir dir="${build.work}/apps" /> <!-- add a copy of the welcome app --> <mkdir dir="${build.work}/apps/welcome"/> <copy todir="${build.work}/apps/welcome"> <fileset dir="${build.externals}/welcome"/> </copy> <mkdir dir="${build.work}/apps/manage"/> <zip zipfile="${build.work}/apps/manage/manage.zip" basedir="${build.externals}/manage/" includes="**" excludes="**/properties,readme/**" /> <copy todir="${build.work}/apps/manage"> <fileset dir="${build.externals}/manage" includes="app.properties,class.properties,readme.txt"/> </copy> <!-- delete dir="${build.work}/manage" /--> </target> <!-- =================================================================== --> <!-- Checkout modules including helmaTools --> <!-- =================================================================== --> <target name="package-modules" depends="init"> <!-- add a copy of the modules --> <mkdir dir="${build.work}/modules"/> <copy todir="${build.work}/modules"> <fileset dir="${build.externals}/modules"/> </copy> <mkdir dir="${build.work}/modules"/> <zip zipfile="${build.work}/modules/helmaTools.zip" basedir="${build.externals}/helmaTools/" includes="**" excludes="**/*.txt, **/*.html, **/*.bat, **/*.sh" /> <!--delete dir="${build.work}/helmaTools" /--> </target> <!-- =================================================================== --> <!-- Packages the work directory with TAR-GZIP --> <!-- needs parameter ${filename} for final dist-file --> <!-- =================================================================== --> <target name="package-tgz" depends="init"> <mkdir dir="${build.dist}" /> <fixcrlf srcdir="${build.work}" eol="lf" eof="remove" includes="**/*.txt, **/*.properties, **/*.hac, **/*.js, **/*.skin" /> <tar tarfile="${build.dist}/${filename}.tar" basedir="${build.work}" excludes="**"> <tarfileset prefix="${filename}" dir="${build.work}" mode="755"> <include name="start.sh"/> </tarfileset> <tarfileset prefix="${filename}" dir="${build.work}"> <include name="**"/> <exclude name="start.sh"/> <exclude name="lib/jimi.jar"/> <exclude name="lib/apache-dom.jar"/> <exclude name="docs/api/**"/> </tarfileset> </tar> <gzip zipfile="${build.dist}/${filename}.tar.gz" src="${build.dist}/${filename}.tar"/> <delete file="${build.dist}/${filename}.tar"/> </target> <!-- =================================================================== --> <!-- Packages the work directory with ZIP --> <!-- needs parameter ${filename} for final dist-file --> <!-- =================================================================== --> <target name="package-zip" depends="init"> <mkdir dir="${build.dist}" /> <fixcrlf srcdir="${build.work}" eol="crlf" includes="**/*.txt, **/*.properties, **/*.hac, **/*.js, **/*.skin, **/*.xml" /> <zip zipfile="${build.dist}/${filename}.zip"> <zipfileset dir="${build.work}" prefix="${filename}"> <include name="**"/> <exclude name="start.sh"/> <exclude name="lib/jimi.jar"/> <exclude name="lib/apache-dom.jar"/> <exclude name="docs/api/**"/> </zipfileset> </zip> </target> <!-- =================================================================== --> <!-- Packages Helma src and build directories with TAR-GZIP --> <!-- needs parameter ${filename} for final dist-file --> <!-- =================================================================== --> <target name="package-src-tgz" depends="init"> <mkdir dir="${build.dist}" /> <tar tarfile="${build.dist}/${filename}-src.tar"> <tarfileset prefix="${filename}" dir="${home.dir}"> <include name="src/**"/> <include name="build/**"/> <include name="build.xml"/> <include name="docs/**"/> <include name="licenses/**"/> <include name="license.txt"/> <include name="lib/jimi.jar"/> <include name="lib/apache-dom.jar"/> <exclude name="docs/modules/**"/> </tarfileset> </tar> <gzip zipfile="${build.dist}/${filename}-src.tar.gz" src="${build.dist}/${filename}-src.tar"/> <delete file="${build.dist}/${filename}-src.tar"/> </target> <!-- =================================================================== --> <!-- Packages Helma src and build directories with ZIP --> <!-- needs parameter ${filename} for final dist-file --> <!-- =================================================================== --> <target name="package-src-zip" depends="init"> <mkdir dir="${build.dist}" /> <zip zipfile="${build.dist}/${filename}-src.zip"> <zipfileset dir="${home.dir}" prefix="${filename}"> <include name="src/**"/> <include name="build/**"/> <include name="build.xml"/> <include name="docs/**"/> <include name="licenses/**"/> <include name="license.txt"/> <include name="lib/jimi.jar"/> <include name="lib/apache-dom.jar"/> <exclude name="docs/modules/**"/> </zipfileset> </zip> </target> <!-- =================================================================== --> <!-- Cleans up temporary build directories --> <!-- =================================================================== --> <target name="clean" depends="init"> <delete dir="${build.work}" /> <delete dir="${build.classes}" /> <delete dir="${build.docs}"/> <delete dir="${build.dist}"/> <delete file="${home.dir}/launcher.jar" quiet="true"/> <delete> <fileset dir="${build.lib}" includes="${jar.name}*.jar"/> </delete> </target> </project>