<?xml version="1.0"?> <!-- ============================================================================== Ant build file Authors: Peter Donald <peter@apache.org> Legal: Copyright (c) 2000 The Apache Software Foundation. All Rights Reserved. ============================================================================== --> <project name="myrmidon" default="main" basedir="."> <!-- Give user a chance to override without editing this file (and without typing -D each time he compiles it) --> <property file=".ant.properties"/> <property file="${user.home}/.ant.properties"/> <property name="name" value="myrmidon"/> <property name="Name" value="Myrmidon"/> <property name="version" value="0.01"/> <property name="year" value="2000-2001"/> <!-- these are here only for those who use jikes compiler. For other developers this part makes no difference. --> <property name="build.compiler" value="jikes"/> <property name="build.compiler.emacs" value="on"/> <property name="build.compiler.pedantic" value="true"/> <property name="build.compiler.depend" value="true"/> <property name="build.compiler.fulldepend" value="true"/> <property name="debug" value="on"/> <property name="optimize" value="off"/> <property name="deprecation" value="on"/> <property name="build.dir" value="build"/> <property name="build.lib" value="${build.dir}/lib"/> <property name="build.src" value="${build.dir}/src"/> <property name="build.classes" value="${build.dir}/classes"/> <property name="src.base" value="src"/> <property name="manifest.dir" value="${src.base}/manifest"/> <property name="java.dir" value="${src.base}/java"/> <property name="script.dir" value="${src.base}/script"/> <property name="lib.dir" value="lib"/> <property name="dist.name" value="${Name}-${version}"/> <property name="dist.dir" value="dist"/> <property name="dist.bin" value="${dist.dir}/bin"/> <property name="dist.lib" value="${dist.dir}/lib"/> <property name="dist.ext" value="${dist.dir}/ext"/> <property name="gen.dir" value="${build.dir}/gen"/> <property name="test.dir" value="${build.dir}/test"/> <property name="test.working.dir" value="${test.dir}/testcases"/> <property name="test.classes" value="${test.dir}/classes"/> <property name="constants.file" value="org/apache/myrmidon/Constants.java"/> <path id="project.class.path"> <pathelement path="${java.class.path}" /> <fileset dir="${lib.dir}"> <include name="*.jar" /> </fileset> <pathelement path="${build.classes}" /> </path> <!-- Main target --> <target name="main" depends="dist-lite" description="Builds the distribution"/> <!-- lets see what is available --> <target name="check_for_optional_packages"> <available property="jdk1.2+" classname="java.lang.ThreadLocal" /> <available property="jdk1.3+" classname="java.lang.StrictMath" /> <available property="jdk1.4+" classname="java.lang.CharSequence" /> <available property="bsf.present" classname="com.ibm.bsf.BSFManager" classpathref="project.class.path" /> <available property="netrexx.present" classname="netrexx.lang.Rexx" classpathref="project.class.path" /> <available property="trax.present" classname="javax.xml.transform.Transformer" classpathref="project.class.path" /> <available property="xslp.present" classname="com.kvisco.xsl.XSLProcessor" classpathref="project.class.path" /> <available property="xalan.present" classname="org.apache.xalan.xslt.XSLTProcessorFactory" classpathref="project.class.path" /> <available property="xalan2.present" classname="org.apache.xalan.transformer.TransformerImpl" classpathref="project.class.path" /> <available property="ejb.ejbc.present" classname="weblogic.ejbc" classpathref="project.class.path" /> <available property="ejb.DDCreator.present" classname="weblogic.ejb.utils.DDCreator" classpathref="project.class.path" /> <available property="ejb.wls.present" classname="weblogic.Server" classpathref="project.class.path" /> <available property="junit.present" classname="junit.framework.TestCase" classpathref="project.class.path" /> <available property="netcomp.present" classname="com.oroinc.net.ftp.FTPClient" classpathref="project.class.path" /> <available property="jcifs.present" classname="jcifs.smb.SmbFile" classpathref="project.class.path" /> <available property="starteam.present" classname="com.starbase.util.Platform" classpathref="project.class.path" /> <available property="antlr.present" classname="antlr.Tool" classpathref="project.class.path"/> <available property="vaj.present" classname="com.ibm.ivj.util.base.Workspace" classpathref="project.class.path"/> <available property="stylebook.present" classname="org.apache.stylebook.Engine" classpathref="project.class.path"/> <available property="jakarta.regexp.present" classname="org.apache.regexp.RE" classpathref="project.class.path"/> <available property="jakarta.oro.present" classname="org.apache.oro.text.regex.Perl5Matcher" classpathref="project.class.path" /> <available property="jmf.present" classname="javax.sound.sampled.Clip" classpathref="project.class.path"/> <available property="icontract.present" classname="com.reliablesystems.iContract.IContracted" classpathref="project.class.path"/> <available property="jdepend.present" classname="jdepend.framework.JDepend" classpathref="project.class.path"/> <available property="log4j.present" classname="org.apache.log4j.Category" classpathref="project.class.path"/> <!-- this is just a way to check for a TraX implementation --> <available property="trax.impl.present" resource="META-INF/services/javax.xml.transform.TransformerFactory" classpathref="project.class.path"/> <available property="xalan.envcheck" classname="org.apache.xalan.xslt.EnvironmentCheck" classpathref="project.class.path" /> <available property="servlet.present" classname="javax.servlet.Servlet" classpathref="project.class.path"/> <available property="adaptx.present" classname="org.exolab.adaptx.xslt.XSLTProcessor" classpathref="project.class.path" /> <available property="xerces.present" classname="org.apache.xerces.parsers.SAXParser" classpathref="project.class.path" /> <available property="bcel.present" classname="org.apache.bcel.Constants" classpathref="project.class.path" /> <condition property="javamail.complete"> <and> <available classname="javax.activation.DataHandler" classpathref="project.class.path"/> <available classname="javax.mail.Transport" classpathref="project.class.path"/> </and> </condition> </target> <!-- Compiles the source code --> <target name="compile" depends="check_for_optional_packages"> <tstamp/> <mkdir dir="${build.src}"/> <copy file="${java.dir}/${constants.file}" tofile="${build.src}/${constants.file}"/> <replace file="${build.src}/${constants.file}" token="@@VERSION@@" value="${version}" /> <replace file="${build.src}/${constants.file}" token="@@DATE@@" value="${TODAY}" /> <property name="ant.package" value="org/apache/tools/ant"/> <property name="antlib.package" value="org/apache/antlib"/> <property name="vfs.package" value="org/apache/aut/vfs"/> <property name="optional.package" value="${ant.package}/taskdefs/optional"/> <property name="optional.type.package" value="${ant.package}/types/optional"/> <property name="util.package" value="${ant.package}/util"/> <property name="regexp.package" value="${util.package}/regexp"/> <mkdir dir="${build.classes}"/> <javac srcdir="src/main" destdir="${build.classes}" debug="${debug}" optimize="${optimize}" deprecation="${deprecation}"> <classpath refid="project.class.path"/> <!-- <exclude name="${constants.file}"/> <src path="${build.src}" /> --> <src path="${java.dir}" /> <include name="**/*.java"/> <exclude name="${regexp.package}/JakartaRegexp*.java" unless="jakarta.regexp.present" /> <exclude name="${regexp.package}/JakartaOro*.java" unless="jakarta.oro.present" /> <exclude name="${regexp.package}/Jdk14Regexp*.java" unless="jdk1.4+" /> <exclude name="${ant.package}/AntSecurityManager.java" unless="jdk1.2+" /> <exclude name="${ant.package}/listener/Log4jListener.java" unless="log4j.present" /> <exclude name="${vfs.package}/provider/ftp/**" unless="netcomp.present"/> <exclude name="${vfs.package}/provider/smb/**" unless="jcifs.present"/> <exclude name="${optional.package}/IContract.java" unless="icontract.present" /> <exclude name="${optional.package}/Script.java" unless="bsf.present" /> <exclude name="${optional.package}/StyleBook.java" unless="stylebook.present" /> <exclude name="${optional.package}/NetRexxC.java" unless="netrexx.present" /> <exclude name="${antlib.package}/xml/TraXLiaison.java" unless="trax.present" /> <exclude name="${antlib.package}/xml/XalanLiaison.java" unless="xalan.present" /> <exclude name="${optional.package}/ejb/Ejbc*.java" unless="ejb.ejbc.present" /> <exclude name="${optional.package}/ejb/DDCreator*.java" unless="ejb.DDCreator.present" /> <exclude name="${optional.package}/ejb/WLRun.java" unless="ejb.wls.present" /> <exclude name="${optional.package}/ejb/WLStop.java" unless="ejb.wls.present" /> <exclude name="${optional.package}/ejb/EjbJar.java" unless="ejbjar.support" /> <exclude name="${optional.package}/ejb/*DeploymentTool.java" unless="ejbjar.support" /> <exclude name="${optional.package}/ejb/IPlanet*.java" unless="ejbjar.support" /> <exclude name="${optional.package}/Javah.java" unless="jdk1.2+" /> <exclude name="${optional.package}/junit/*" unless="junit.present" /> <exclude name="${optional.package}/net/**.java" unless="netcomp.present" /> <exclude name="${optional.package}/net/MimeMail.java" unless="javamail.complete" /> <exclude name="${optional.package}/scm/AntStarTeam*.java" unless="starteam.present" /> <exclude name="${optional.package}/ANTLR.java" unless="antlr.present" /> <exclude name="${optional.package}/ide/VAJ*.java" unless="vaj.present" /> <exclude name="${optional.package}/ide/VAJ*Servlet.java" unless="servlet.present" /> <exclude name="${optional.package}/perforce/*.java" unless="jakarta.oro.present" /> <exclude name="${optional.package}/sound/*.java" unless="jmf.present" /> <exclude name="${optional.package}/junit/XMLResultAggregator.java" unless="trax.present" /> <exclude name="${optional.package}/junit/AggregateTransformer.java" unless="trax.present" /> <exclude name="${optional.package}/junit/XMLResultAggregator.java" unless="xalan2.present" /> <exclude name="${optional.package}/junit/AggregateTransformer.java" unless="xalan2.present" /> <exclude name="${optional.package}/junit/XalanExecutor.java" unless="xalan2.present" /> <exclude name="${optional.package}/junit/Xalan2Executor.java" unless="xalan2.present" /> <exclude name="${optional.package}/junit/Xalan1Executor.java" unless="xalan.present" /> <exclude name="${optional.package}/jdepend/*" unless="jdepend.present" /> <exclude name="${optional.package}/sitraka/**" unless="some.regexp.support"/> <exclude name="${optional.package}/metamata/MAudit*" unless="jakarta.oro.present"/> <exclude name="${optional.package}/metamata/MMetrics*" unless="trax.present"/> <exclude name="${optional.package}/metamata/**" unless="jdk1.2+" /> <exclude name="${optional.package}/ManifestFile.java" unless="jdk1.2+" /> <exclude name="${optional.type.package}/depend/*.java" unless="bcel.present" /> <exclude name="${util.package}/depend/*.java" unless="bcel.present" /> <exclude name="${optional.type.package}/depend/*.java" unless="jdk1.2+" /> <exclude name="${util.package}/depend/*.java" unless="jdk1.2+" /> </javac> <copy todir="${build.classes}"> <fileset dir="${java.dir}"> <exclude name="**/*.java"/> </fileset> </copy> </target> <!-- Creates the jars file --> <target name="jars" depends="compile"> <mkdir dir="${build.lib}"/> <jar jarfile="${build.lib}/myrmidon-launcher.jar" basedir="${build.classes}" manifest="${manifest.dir}/myrmidon-launcher.mf"> <include name="org/apache/myrmidon/launcher/*" /> </jar> <jar jarfile="${build.lib}/myrmidon-api.jar" basedir="${build.classes}" manifest="${manifest.dir}/myrmidon-api.mf"> <include name="org/apache/myrmidon/api/*" /> <include name="org/apache/myrmidon/aspects/*" /> <include name="org/apache/myrmidon/converter/*" /> <include name="org/apache/myrmidon/interfaces/**" /> <include name="org/apache/myrmidon/listeners/*" /> <include name="org/apache/myrmidon/framework/**" /> <include name="org/apache/aut/**" /> <include name="org/apache/tools/**" /> <!-- <include name="org/apache/myrmidon/*" /> <include name="org/apache/myrmidon/components/**"/> <include name="org/apache/myrmidon/frontends/*" /> --> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-roles.xml"> <include name="builtin-ant-roles.xml"/> </zipfileset> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml"> <include name="builtin-ant-descriptor.xml"/> </zipfileset> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-services.xml"> <include name="core-services.xml"/> </zipfileset> </jar> <!-- <jar jarfile="${build.lib}/myrmidon-framework.jar" basedir="${build.classes}" manifest="${manifest.dir}/myrmidon-framework.mf"> <include name="org/apache/myrmidon/framework/**" /> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-roles.xml"> <include name="builtin-ant-roles.xml"/> </zipfileset> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml"> <include name="builtin-ant-descriptor.xml"/> </zipfileset> </jar> --> <jar jarfile="${build.lib}/myrmidon-container.jar" basedir="${build.classes}" manifest="${manifest.dir}/myrmidon-container.mf"> <include name="org/apache/myrmidon/components/**" /> <include name="org/apache/myrmidon/frontends/*" /> <include name="org/apache/myrmidon/*" /> </jar> <ant antfile="antlib.xml"> <property name="antlib.name" value="core"/> </ant> <ant antfile="antlib.xml"> <property name="antlib.name" value="file"/> </ant> <ant antfile="antlib.xml"> <property name="antlib.name" value="archive"/> </ant> <ant antfile="antlib.xml"> <property name="antlib.name" value="cvslib"/> </ant> <ant antfile="antlib.xml"> <property name="antlib.name" value="nativelib"/> </ant> <ant antfile="antlib.xml"> <property name="antlib.name" value="security"/> </ant> <ant antfile="antlib.xml"> <property name="antlib.name" value="runtime"/> </ant> <ant antfile="antlib.xml"> <property name="antlib.name" value="sound"/> </ant> <!-- <ant antfile="antlib.xml"> <property name="antlib.name" value="vfile"/> </ant> --> <jar jarfile="${build.lib}/selftest.atl" basedir="${build.classes}" manifest="${manifest.dir}/selftest.mf"> <include name="org/apache/antlib/selftest/**" /> <exclude name="org/apache/antlib/selftest/extension1/**" /> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml"> <include name="selftest-ant-descriptor.xml"/> </zipfileset> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-roles.xml"> <include name="empty-roles.xml"/> </zipfileset> </jar> <jar jarfile="${build.lib}/selftest-extension1.jar" basedir="${build.classes}" manifest="${manifest.dir}/selftest-extension1.mf"> <include name="org/apache/antlib/selftest/extension1/**" /> </jar> </target> <!-- Compiles and runs the unit tests --> <target name="test" depends="compile" if="junit.present" description="Runs the unit tests"> <!-- Compile the unit tests --> <mkdir dir="${test.classes}"/> <javac srcdir="src/testcases" destdir="${test.classes}" debug="${debug}" optimize="${optimize}" deprecation="${deprecation}"> <classpath refid="project.class.path"/> </javac> <!-- Prepare test files --> <delete dir="${test.working.dir}"/> <copy todir="${test.working.dir}"> <fileset dir="etc/testcases"/> </copy> <!-- Prepare the VFS tests --> <property name="test.vfs.dir" location="${test.working.dir}/org/apache/aut/vfs"/> <mkdir dir="${test.vfs.dir}/basedir/emptydir"/> <zip zipfile="${test.vfs.dir}/test.zip"> <fileset dir="${test.vfs.dir}" includes="basedir/**"/> </zip> <!-- Prepare deployer tests --> <property name="test.deployer.dir" value="${test.working.dir}/org/apache/myrmidon/components/deployer"/> <mkdir dir="${test.deployer.dir}"/> <jar jarfile="${test.deployer.dir}/test.atl"> <zipfileset dir="etc/testcases/org/apache/myrmidon/components/deployer" prefix="META-INF" includes="*.xml"/> </jar> <!-- Prepare type factory tests --> <mkdir dir="${test.working.dir}/org/apache/myrmidon/interfaces/type"/> <jar jarfile="${test.working.dir}/org/apache/myrmidon/interfaces/type/types.jar"> <fileset dir="${test.classes}" includes="org/apache/myrmidon/interfaces/type/MyType1.class"/> </jar> <junit printsummary="on" fork="true"> <formatter type="brief" usefile="false"/> <classpath refid="project.class.path"/> <classpath location="${test.classes}"/> <!-- Pass config to the tests --> <sysproperty key="test.basedir" value="${test.working.dir}"/> <sysproperty key="test.smb.uri" value="smb://${vfs.user}:${vfs.password}@${vfs.host}/${vfs.user}/vfs"/> <sysproperty key="test.ftp.uri" value="ftp://${vfs.user}:${vfs.password}@${vfs.host}/home/${vfs.user}/vfs"/> <batchtest> <fileset dir="${test.classes}"> <include name="**/*Test.class" unless="single.test"/> <exclude name="**/Abstract*Test.class"/> <include name="**/${single.test}Test.class" if="single.test"/> <exclude name="**/BzipTest.class" unless="test.bzip"/> <exclude name="**/SmbFileSystemTest.class" unless="test.smb"/> <exclude name="**/FtpFileSystemTest.class" unless="test.ftp"/> </fileset> </batchtest> </junit> </target> <!-- Creates the distribution --> <target name="dist-lite" depends="jars"> <mkdir dir="${dist.bin}"/> <mkdir dir="${dist.lib}"/> <mkdir dir="${dist.ext}"/> <copy file="${build.lib}/myrmidon-launcher.jar" tofile="${dist.bin}/myrmidon-launcher.jar" /> <copy file="${build.lib}/myrmidon-container.jar" tofile="${dist.bin}/lib/myrmidon-container.jar" /> <copy todir="${dist.lib}"> <fileset dir="${build.lib}"> <exclude name="selftest.atl"/> <exclude name="myrmidon-container.jar"/> <exclude name="myrmidon-launcher.jar"/> </fileset> </copy> <copy todir="${dist.ext}"> <fileset dir="${build.lib}"> <include name="selftest.atl"/> <include name="selftest-extension1.jar"/> </fileset> </copy> <copy todir="${dist.lib}"> <fileset dir="${lib.dir}"> <exclude name="ant.jar"/> </fileset> </copy> <copy todir="${dist.bin}"> <fileset dir="${script.dir}"/> </copy> <chmod dir="${dist.dir}" perm="go-rwx" /> <chmod file="${dist.bin}/ant" perm="u+x"/> <fixcrlf srcdir="${dist.bin}" eol="crlf" includes="**/*.bat" /> <fixcrlf srcdir="${dist.bin}" eol="lf" includes="**/*.sh" /> <fixcrlf srcdir="${dist.bin}" eol="lf" includes="ant" /> </target> <!-- Creates the distribution --> <target name="dist" depends="dist-lite,test" description="Builds the distribution"/> <!-- Cleans up build and distribution directories --> <target name="clean" description="Deletes all built files"> <delete dir="${build.dir}"/> <delete dir="${dist.dir}" failonerror="false"/> <delete> <fileset dir="." includes="**/*~" defaultexcludes="no"/> </delete> </target> <!-- Cleans up the compiled classes --> <target name="clean-classes"> <delete dir="${build.classes}"/> </target> <!-- Rebuilds the distribution --> <target name="rebuild" description="Rebuilds the distribution"> <antcall target="clean"/> <antcall target="main"/> </target> <!-- Recompiles the classes, and builds the distribution --> <target name="recompile" description="Recompiles and builds the the distribution"> <antcall target="clean-classes"/> <antcall target="main"/> </target> </project>