|
- <?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 and installs the custom build tasks -->
- <target name="custom-tasks">
- <property name="custom-tasks-dir" value="${build.dir}/tasks"/>
- <mkdir dir="${custom-tasks-dir}"/>
- <javac srcdir="src/make" destdir="${custom-tasks-dir}">
- </javac>
- <taskdef name="antlib-jar" classname="org.apache.myrmidon.build.AntlibJarTask">
- <classpath location="${custom-tasks-dir}"/>
- </taskdef>
- </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="custom-tasks, 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>
-
- <antlib-jar jarfile="${build.lib}/myrmidon-api.jar"
- basedir="${build.classes}"
- manifest="${manifest.dir}/myrmidon-api.mf"
- rolesDescriptor="${manifest.dir}/builtin-ant-roles.xml"
- descriptor="${manifest.dir}/builtin-ant-descriptor.xml"
- servicesDescriptor="${manifest.dir}/core-services.xml" >
- <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/*" /> -->
- </antlib-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>
-
- <antlib-jar jarfile="${build.lib}/selftest.atl"
- basedir="${build.classes}"
- manifest="${manifest.dir}/selftest.mf"
- descriptor="${manifest.dir}/selftest-ant-descriptor.xml"
- rolesDescriptor="${manifest.dir}/empty-roles.xml">
- <include name="org/apache/antlib/selftest/**" />
- <exclude name="org/apache/antlib/selftest/extension1/**" />
- </antlib-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="dist-lite" 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 a dummy installation -->
- <copy todir="${test.working.dir}/dist">
- <fileset dir="${dist.dir}"/>
- </copy>
-
- <!-- Prepare the VFS tests -->
- <property name="test.vfs.dir" location="${test.working.dir}/org/apache/aut/vfs"/>
- <mkdir dir="${test.vfs.dir}/write-tests"/>
- <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>
-
- <!-- Prepare the project tests -->
- <copy file="src/manifest/testcases-ant-descriptor.xml" tofile="${test.classes}/META-INF/ant-descriptor.xml"/>
-
- <!-- Run all the tests -->
- <junit printsummary="on"
- fork="false">
- <formatter type="brief" usefile="false"/>
- <classpath>
- <fileset dir="${test.working.dir}/dist/bin/lib" includes="**/*.jar"/>
- <fileset dir="${test.working.dir}/dist/lib" includes="**/*.jar, **/*.atl" excludes="crimson.jar"/>
- </classpath>
- <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>
|