<?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 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="test.classes" value="${build.dir}/test/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" /> <!-- 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="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="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"/> <!-- the idea classes are too tightly coupled to ant1 and will need a complete rewrite so we will exclude them for the moment --> <exclude name="${optional.package}/ide/*.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="${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}"> <include name="**/*.properties"/> </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> </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> <jar jarfile="${build.lib}/core.atl" basedir="${build.classes}"> <include name="org/apache/antlib/core/**" /> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml"> <include name="core-ant-descriptor.xml"/> </zipfileset> </jar> <jar jarfile="${build.lib}/archive.atl" basedir="${build.classes}"> <include name="org/apache/antlib/archive/**" /> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml"> <include name="archive-ant-descriptor.xml"/> </zipfileset> </jar> <jar jarfile="${build.lib}/cvslib.atl" basedir="${build.classes}"> <include name="org/apache/antlib/cvslib/**" /> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml"> <include name="cvslib-ant-descriptor.xml"/> </zipfileset> </jar> <jar jarfile="${build.lib}/nativelib.atl" basedir="${build.classes}"> <include name="org/apache/antlib/nativelib/**" /> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml"> <include name="nativelib-ant-descriptor.xml"/> </zipfileset> </jar> <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> </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> <jar jarfile="${build.lib}/security.atl" basedir="${build.classes}"> <include name="org/apache/antlib/security/**"/> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml"> <include name="security-ant-descriptor.xml"/> </zipfileset> </jar> <jar jarfile="${build.lib}/runtime.atl" basedir="${build.classes}"> <include name="org/apache/antlib/runtime/**"/> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml"> <include name="runtime-ant-descriptor.xml"/> </zipfileset> </jar> <jar jarfile="${build.lib}/ant1.atl" basedir="${build.classes}"> <include name="org/apache/antlib/ant1/**"/> <zipfileset dir="${manifest.dir}" fullpath="META-INF/ant-descriptor.xml"> <include name="ant1-ant-descriptor.xml"/> </zipfileset> </jar> </target> <target name="xdoclet"> <path id="xdoclet.classpath"> <pathelement location="lib/xdoclet.jar"/> <pathelement location="lib/log4j-core.jar"/> <path refid="project.class.path"/> </path> <taskdef name="xdoclet" classname="xdoclet.DocletTask" classpath="lib/xdoclet.jar"/> <xdoclet sourcepath="${java.dir}" destdir="${build.dir}" classpathref="xdoclet.classpath"> <fileset dir="${java.dir}"> <include name="**/*.java" /> </fileset> <template templateFile="${manifest.dir}/core-ant-descriptor.template" destinationfile="core-ant-descriptor.xml"/> <template templateFile="${manifest.dir}/builtin-ant-roles.template" destinationfile="builtin-ant-roles.xml"/> </xdoclet> </target> <!-- Compiles and runs the unit tests --> <target name="test" depends="compile" if="junit.present"> <mkdir dir="${test.classes}"/> <javac srcdir="src/testcases" destdir="${test.classes}" debug="${debug}" optimize="${optimize}" deprecation="${deprecation}"> <classpath refid="project.class.path"/> </javac> <junit printsummary="on" fork="false"> <formatter type="brief" usefile="false"/> <classpath refid="project.class.path"/> <classpath location="${test.classes}"/> <batchtest> <fileset dir="${test.classes}" includes="**/*Test.class"/> </batchtest> </junit> </target> <!-- Creates the distribution --> <target name="dist" 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> <!-- Cleans up build and distribution directories --> <target name="clean"> <delete dir="${build.dir}"/> <delete dir="${dist.dir}" failonerror="false"/> <delete> <fileset dir="." includes="**/*~" defaultexcludes="no"/> </delete> </target> <!-- Rebuilds the distribution --> <target name="rebuild"> <antcall target="clean"/> <antcall target="main"/> </target> </project>