|
Ant example source code file (build.xml)
The build.xml source code<?xml version="1.0"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <project name="apache-ant" default="main" basedir="."> <!-- Give user a chance to override without editing this file (and without typing -D on each invocation) --> <property file=".ant.properties"/> <property file="${user.home}/.ant.properties"/> <property environment="env"/> <!-- =================================================================== Set the properties that control names and versions =================================================================== --> <property name="Name" value="Apache Ant"/> <property name="name" value="ant"/> <!-- this is the groupId of ant in the Maven repository --> <property name="groupid" value="org.apache.ant"/> <property name="project.version" value="1.7.0"/> <!-- pom.version is used when doing a distribution and must match with what is checked in under src/etc/poms --> <property name="pom.version" value="1.7.0-SNAPSHOT"/> <property name="manifest-version" value="1.7.0"/> <property name="bootstrap.jar" value="ant-bootstrap.jar"/> <property name="ant.package" value="org/apache/tools/ant"/> <property name="taskdefs.package" value="${ant.package}/taskdefs"/> <property name="condition.package" value="${taskdefs.package}/condition"/> <property name="optional.package" value="${taskdefs.package}/optional"/> <property name="optional.condition.package" value="${optional.package}/condition"/> <property name="type.package" value="${ant.package}/types"/> <property name="optional.type.package" value="${type.package}/optional"/> <property name="apache.resolver.type.package" value="${ant.package}/types/resolver"/> <property name="util.package" value="${ant.package}/util"/> <property name="regexp.package" value="${util.package}/regexp"/> <property name="optional.jars.prefix" value="ant"/> <property name="optional.jars.whenmanifestonly" value="skip"/> <!-- =================================================================== Set the properties that control various build options =================================================================== --> <property name="debug" value="true"/> <property name="chmod.fail" value="true"/> <property name="chmod.maxparallel" value="250"/> <property name="deprecation" value="false"/> <property name="optimize" value="true"/> <property name="javac.target" value="1.2"/> <property name="javac.source" value="1.2"/> <property name="junit.fork" value="false"/> <property name="junit.filtertrace" value="off"/> <property name="junit.summary" value="no"/> <property name="test.haltonfailure" value="false"/> <property name="junit.forkmode" value="once"/> <property name="unfiltered.files" value="**/*.gif,**/*.jpg,**/*.ico,**/*.pdf,**/*.zip"/> <!-- =================================================================== Set the properties related to the source tree =================================================================== --> <property name="src.dir" value="src"/> <property name="java.dir" value="${src.dir}/main"/> <property name="script.dir" value="${src.dir}/script"/> <property name="lib.dir" value="lib"/> <property name="docs.dir" value="docs"/> <property name="etc.dir" value="${src.dir}/etc"/> <property name="src.junit" value="${src.dir}/tests/junit"/> <property name="src.antunit" value="${src.dir}/tests/antunit"/> <property name="tests.etc.dir" value="${src.dir}/etc/testcases"/> <property name="manifest" value="${src.dir}/etc/manifest"/> <property name="resource.dir" value="${src.dir}/resources"/> <!-- =================================================================== Set the properties for the build area =================================================================== --> <property name="build.dir" value="build"/> <property name="bootstrap.dir" value="bootstrap"/> <property name="build.classes" value="${build.dir}/classes"/> <property name="build.lib" value="${build.dir}/lib"/> <property name="build.javadocs" value="${build.dir}/javadocs"/> <property name="build.tests" value="${build.dir}/testcases"/> <property name="build.tests.javadocs" value="${build.dir}/javadocs.test/"/> <property name="build.junit.xml" location="${build.tests}/xml"/> <property name="antunit.xml" location="${build.dir}/antunit/xml"/> <property name="antunit.reports" location="${build.dir}/antunit/reports"/> <property name="build.junit.reports" location="${build.tests}/reports"/> <property name="manifest.tmp" value="${build.dir}/optional.manifest"/> <!-- the absolute path --> <property name="build.tests.value" location="${build.tests}"/> <!-- =================================================================== Set the paths used in the build =================================================================== --> <path id="classpath"> </path> <path id="tests-classpath"> <pathelement location="${build.classes}"/> <pathelement location="${build.tests}"/> <!-- include the test source and test data dirs so that we can pick resources via getResource(AsStream) --> <pathelement location="${src.junit}"/> <pathelement location="${tests.etc.dir}"/> <path refid="classpath"/> </path> <!-- turn this path into a string which is passed to the tests --> <property name="tests-classpath.value" refid="tests-classpath"/> <!-- =================================================================== Set up properties for the distribution area =================================================================== --> <property name="dist.name" value="apache-${name}-${project.version}"/> <property name="dist.base" value="distribution"/> <property name="dist.base.source" value="${dist.base}/source"/> <property name="dist.base.binaries" value="${dist.base}/binaries"/> <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.docs" value="${dist.dir}/docs"/> <property name="dist.etc" value="${dist.dir}/etc"/> <property name="dist.javadocs" value="${dist.dir}/docs/manual/api"/> <property name="src.dist.dir" value="dist-src"/> <property name="src.dist.src" value="${src.dist.dir}/src"/> <property name="src.dist.docs" value="${src.dist.dir}/docs"/> <property name="src.dist.lib" value="${src.dist.dir}/lib"/> <property name="java-repository.dir" value="java-repository/${groupid}"/> <property name="java-repository.jars.dir" value="${java-repository.dir}/jars"/> <property name="java-repository.poms.dir" value="${java-repository.dir}/poms"/> <!-- =================================================================== Set up selectors to be used by javac, junit and jar to exclude files that have dependencies that are not available =================================================================== --> <!-- depends on JDK version --> <selector id="needs.jdk1.3+"> <or> <filename name="${ant.package}/taskdefs/TestProcess*"/> <filename name="${optional.package}/extension/**"/> </or> </selector> <selector id="needs.jdk1.4+"> <or> <filename name="${regexp.package}/Jdk14Regexp*"/> <filename name="${ant.package}/types/AssertionsTest.java"/> </or> </selector> <selector id="needs.jdk1.5+"> <or> <filename name="${taskdefs.package}/AptTest*"/> <filename name="${util.package}/java15/*"/> </or> </selector> <!-- Kaffe has some JDK 1.5 features including java.lang.Readable, but not all of them --> <selector id="not.in.kaffe"> <or> <filename name="${condition.package}/IsReachable*"/> </or> </selector> <!-- depends on external libraries --> <selector id="needs.trax"> <or> <filename name="${optional.package}/TraXLiaison*"/> <filename name="${optional.package}/XsltTest*"/> <filename name="${type.package}/XMLCatalogBuildFileTest*"/> </or> </selector> <selector id="needs.apache-resolver"> <filename name="${apache.resolver.type.package}/**"/> </selector> <selector id="needs.junit"> <filename name="${optional.package}/junit/**"/> </selector> <selector id="needs.apache-regexp"> <filename name="${regexp.package}/JakartaRegexp*"/> </selector> <selector id="needs.apache-oro"> <or> <filename name="${regexp.package}/JakartaOro*"/> <filename name="${optional.package}/perforce/*"/> </or> </selector> <selector id="needs.apache-bcel"> <or> <filename name="${ant.package}/filters/util/JavaClassHelper*"/> <filename name="${util.package}/depend/bcel/*"/> <filename name="${optional.type.package}/depend/ClassFileSetTest*"/> </or> </selector> <selector id="needs.apache-log4j"> <filename name="${ant.package}/listener/Log4jListener*"/> </selector> <selector id="needs.commons-logging"> <filename name="${ant.package}/listener/CommonsLoggingListener*"/> </selector> <selector id="needs.apache-bsf"> <or> <filename name="${util.package}/ScriptRunner.*"/> <filename name="${util.package}/optional/ScriptRunner*"/> </or> </selector> <selector id="needs.stylebook"> <filename name="${optional.package}/StyleBook*"/> </selector> <selector id="needs.javamail"> <or> <filename name="${ant.package}/taskdefs/email/MimeMailer*"/> </or> </selector> <selector id="needs.netrexx"> <filename name="${optional.package}/NetRexxC*"/> </selector> <selector id="needs.weblogic.ejbc"> <filename name="${optional.package}/ejb/Ejbc*"/> </selector> <selector id="needs.weblogic.ddcreator"> <filename name="${optional.package}/ejb/DDCreator*"/> </selector> <selector id="needs.weblogic.server"> <or> <filename name="${optional.package}/ejb/WLRun*"/> <filename name="${optional.package}/ejb/WLStop*"/> </or> </selector> <selector id="needs.commons-net"> <or> <filename name="${optional.package}/net/FTP*"/> <filename name="${optional.package}/net/RExec*"/> <filename name="${optional.package}/net/TelnetTask*"/> </or> </selector> <selector id="needs.starteam"> <or> <filename name="${optional.package}/scm/AntStarTeam*"/> <filename name="${optional.package}/starteam/*"/> </or> </selector> <selector id="needs.antlr"> <filename name="${optional.package}/ANTLR*"/> </selector> <selector id="needs.jmf"> <filename name="${optional.package}/sound/*"/> </selector> <selector id="needs.jai"> <or> <filename name="${optional.package}/image/*"/> <filename name="${optional.type.package}/image/*"/> </or> </selector> <selector id="needs.jdepend"> <filename name="${optional.package}/jdepend/*"/> </selector> <selector id="needs.swing"> <filename name="${optional.package}/splash/*"/> </selector> <selector id="needs.jsch"> <filename name="${optional.package}/ssh/*"/> </selector> <selector id="ant.launcher"> <filename name="${ant.package}/launch/**/*"/> </selector> <patternset id="onlinetests"> <exclude name="**/GetTest.java" if="offline"/> </patternset> <patternset id="teststhatfail"> <!-- Property 'run.failing.tests' should force Ant to run these tests. --> <!-- Because the whole patternset can not be excluded, you have to add --> <!-- an unless-attribute on each exclude-element. --> <exclude unless="run.failing.tests" name="${optional.package}/BeanShellScriptTest.java"/> <exclude unless="run.failing.tests" name="${optional.package}/jdepend/JDependTest.java"/> <exclude unless="run.failing.tests" name="${optional.package}/DotnetTest.java"/> <exclude unless="run.failing.tests" name="${optional.package}/WsdlToDotnetTest.java"/> </patternset> <!--tests that need an XML Schema-supporting parser to work--> <selector id="needs.xmlschema"> <or> <filename name="${optional.package}/SchemaValidateTest.*"/> <filename name="${optional.package}/XmlValidateTest.*"/> </or> </selector> <!-- =================================================================== Set up a patternsets that matches the parts of our JUnit testsuite that may be useful for task developers. =================================================================== --> <patternset id="useful.tests"> <include name="${ant.package}/BuildFileTest*"/> <include name="${regexp.package}/RegexpMatcherTest*"/> <include name="${regexp.package}/RegexpTest*"/> <include name="${optional.package}/AbstractXSLTLiaisonTest*"/> <include name="${ant.package}/types/AbstractFileSetTest*"/> </patternset> <!-- =================================================================== Set up a patternsets that matches the parts of our site that should not be part of the distribution. =================================================================== --> <patternset id="site.excludes"> <exclude name="bindownload.html"/> <exclude name="srcdownload.html"/> <exclude name="*.cgi"/> </patternset> <!-- =================================================================== Check to see what optional dependencies are available =================================================================== --> <target name="check_for_optional_packages"> <available property="jdk1.3+" classname="java.lang.StrictMath"/> <available property="jdk1.4+" classname="java.lang.CharSequence"/> <available property="jdk1.5+" classname="java.net.Proxy"/> <available property="jdk1.6+" classname="java.util.ServiceLoader"/> <available property="kaffe" classname="kaffe.util.NotImplemented"/> <available property="bsf.present" classname="org.apache.bsf.BSFManager" classpathref="classpath"/> <available property="netrexx.present" classname="netrexx.lang.Rexx" classpathref="classpath"/> <available property="trax.present" classname="javax.xml.transform.Transformer" classpathref="classpath"/> <condition property="trax.impl.present"> <or> <and> <isset property="javax.xml.transform.TransformerFactory"/> <available classname="${javax.xml.transform.TransformerFactory}" classpathref="classpath"/> </and> <available resource="META-INF/services/javax.xml.transform.TransformerFactory"/> </or> </condition> <available property="apache.resolver.present" classname="org.apache.xml.resolver.tools.CatalogResolver" classpathref="classpath"/> <available property="xalan2.present" classname="org.apache.xalan.transformer.TransformerImpl" classpathref="classpath"/> <available property="ejb.ejbc.present" classname="weblogic.ejbc" classpathref="classpath"/> <available property="ejb.DDCreator.present" classname="weblogic.ejb.utils.DDCreator" classpathref="classpath"/> <available property="ejb.wls.present" classname="weblogic.Server" classpathref="classpath"/> <available property="junit.present" classname="junit.framework.TestCase" classpathref="classpath"/> <available property="antunit.present" classname="org.apache.ant.antunit.AntUnit" classpathref="classpath"/> <available property="commons.net.present" classname="org.apache.commons.net.ftp.FTPClient" classpathref="classpath"/> <available property="starteam.present" classname="com.starbase.util.Platform" classpathref="classpath"/> <available property="antlr.present" classname="antlr.Tool" classpathref="classpath"/> <available property="stylebook.present" classname="org.apache.stylebook.Engine" classpathref="classpath"/> <available property="apache.regexp.present" classname="org.apache.regexp.RE" classpathref="classpath"/> <available property="apache.oro.present" classname="org.apache.oro.text.regex.Perl5Matcher" classpathref="classpath"/> <available property="jmf.present" classname="javax.sound.sampled.Clip" classpathref="classpath"/> <available property="jai.present" classname="javax.media.jai.JAI" classpathref="classpath"/> <available property="jdepend.present" classname="jdepend.framework.JDepend" classpathref="classpath"/> <available property="log4j.present" classname="org.apache.log4j.Logger" classpathref="classpath"/> <available property="commons.logging.present" classname="org.apache.commons.logging.LogFactory" classpathref="classpath"/> <available property="xalan.envcheck" classname="org.apache.xalan.xslt.EnvironmentCheck" classpathref="classpath"/> <available property="which.present" classname="org.apache.env.Which" classpathref="classpath"/> <available property="xerces.present" classname="org.apache.xerces.parsers.SAXParser" classpathref="classpath"/> <available property="bcel.present" classname="org.apache.bcel.Constants" classpathref="classpath"/> <condition property="javamail.complete"> <and> <available classname="javax.activation.DataHandler" classpathref="classpath"/> <available classname="javax.mail.Transport" classpathref="classpath"/> </and> </condition> <condition property="some.regexp.support"> <or> <isset property="jdk1.4+"/> <isset property="apache.regexp.present"/> <isset property="apache.oro.present"/> </or> </condition> <condition property="tests.and.ant.share.classloader"> <or> <equals arg1="${junit.fork}" arg2="true"/> <equals arg1="${build.sysclasspath}" arg2="only"/> </or> </condition> <condition property="sun.tools.present"> <and> <available classname="sun.tools.native2ascii.Main"/> <available classname="com.sun.tools.javah.Main"/> </and> </condition> <condition property="tests.are.on.system.classpath"> <or> <resourcecount count="1"> <intersect> <path path="${java.class.path}" /> <file file="${build.tests}" /> </intersect> </resourcecount> <istrue value="${junit.fork}"/> </or> </condition> <echo level="verbose"> tests.are.on.system.classpath=${tests.are.on.system.classpath} <condition property="jasper.present"> <and> <available classname="org.apache.jasper.compiler.Compiler"/> <available classname="org.apache.jasper.JasperException"/> </and> </condition> <condition property="swing.present"> <or> <not> <isset property="kaffe"/> </not> <available classname="javax.swing.ImageIcon" classpathref="classpath"/> </or> </condition> <!-- http client needs commons logging --> <condition property="apache-httpclient.present"> <and> <available classname="org.apache.commons.httpclient.HttpClient" classpathref="classpath"/> <isset property="commons.logging.present"/> </and> </condition> <condition property="wsdl.found"> <or> <available file="wsdl" filepath="${env.PATH}"/> <available file="wsdl.exe" filepath="${env.PATH}"/> <available file="wsdl.exe" filepath="${env.Path}"/> </or> </condition> <echo level="verbose"> wsdl.found=${wsdl.found} <condition property="csc.found"> <or> <available file="mcs" filepath="${env.PATH}"/> <available file="csc" filepath="${env.PATH}"/> <available file="csc.exe" filepath="${env.PATH}"/> <available file="csc.exe" filepath="${env.Path}"/> </or> </condition> <echo level="verbose"> csc.found=${csc.found} <condition property="dotnetapps.found"> <and> <isset property="csc.found"/> <isset property="wsdl.found"/> </and> </condition> <echo level="verbose"> dotnetapps.found=${dotnetapps.found} <available property="rhino.present" classname="org.mozilla.javascript.Scriptable" classpathref="classpath"/> <available property="beanshell.present" classname="bsh.StringUtil" classpathref="classpath"/> <available property="xerces1.present" classname="org.apache.xerces.framework.XMLParser" classpathref="classpath"/> <available property="jsch.present" classname="com.jcraft.jsch.Session" classpathref="classpath"/> <condition property="build.compiler" value="classic"> <not> <isset property="jdk1.3+"/> </not> </condition> <property name="build.compiler" value="modern"/> <!--check for XSD support in the parser--> <condition property="xmlschema.present"> <or> <parsersupports feature="http://apache.org/xml/features/validation/schema"/> <parsersupports feature="http://java.sun.com/xml/jaxp/properties/schemaSource"/> </or> </condition> </target> <!-- =================================================================== Prepare the build =================================================================== --> <target name="prepare"> <tstamp> <format property="year" pattern="yyyy"/> </tstamp> <filterchain id="ant.filters"> <expandproperties/> </filterchain> </target> <!-- =================================================================== Build the code =================================================================== --> <target name="build" depends="prepare, check_for_optional_packages" description="--> compiles the source code"> <mkdir dir="${build.dir}"/> <mkdir dir="${build.classes}"/> <mkdir dir="${build.lib}"/> <javac srcdir="${java.dir}" destdir="${build.classes}" debug="${debug}" deprecation="${deprecation}" target="${javac.target}" source="${javac.source}" optimize="${optimize}"> <classpath refid="classpath"/> <selector id="conditional-patterns"> <not> <or> <selector refid="needs.jdk1.3+" unless="jdk1.3+"/> <selector refid="needs.jdk1.4+" unless="jdk1.4+"/> <selector refid="needs.jdk1.5+" unless="jdk1.5+"/> <selector refid="not.in.kaffe" if="kaffe"/> <selector refid="needs.trax" unless="trax.present"/> <selector refid="needs.apache-resolver" unless="apache.resolver.present"/> <selector refid="needs.junit" unless="junit.present"/> <selector refid="needs.apache-regexp" unless="apache.regexp.present"/> <selector refid="needs.apache-oro" unless="apache.oro.present"/> <selector refid="needs.apache-bcel" unless="bcel.present"/> <selector refid="needs.apache-log4j" unless="log4j.present"/> <selector refid="needs.commons-logging" unless="commons.logging.present"/> <selector refid="needs.apache-bsf" unless="bsf.present"/> <selector refid="needs.stylebook" unless="stylebook.present"/> <selector refid="needs.javamail" unless="javamail.complete"/> <selector refid="needs.netrexx" unless="netrexx.present"/> <selector refid="needs.weblogic.ejbc" unless="ejb.ejbc.present"/> <selector refid="needs.weblogic.ddcreator" unless="ejb.DDCreator.present"/> <selector refid="needs.weblogic.server" unless="ejb.wls.present"/> <selector refid="needs.commons-net" unless="commons.net.present"/> <selector refid="needs.starteam" unless="starteam.present"/> <selector refid="needs.antlr" unless="antlr.present"/> <selector refid="needs.jmf" unless="jmf.present"/> <selector refid="needs.jai" unless="jai.present"/> <selector refid="needs.jdepend" unless="jdepend.present"/> <selector refid="needs.swing" unless="swing.present"/> <selector refid="needs.jsch" unless="jsch.present"/> <selector refid="needs.xmlschema" unless="xmlschema.present"/> </or> </not> </selector> </javac> <copy todir="${build.classes}"> <fileset dir="${java.dir}"> <include name="**/*.properties"/> <include name="**/*.dtd"/> <include name="**/*.xml"/> </fileset> <fileset dir="${resource.dir}" /> </copy> <copy todir="${build.classes}" overwrite="true" encoding="UTF-8"> <fileset dir="${java.dir}"> <include name="**/version.txt"/> <include name="**/defaultManifest.mf"/> </fileset> <filterchain refid="ant.filters"/> </copy> <copy todir="${build.classes}/${optional.package}/junit/xsl"> <fileset dir="${etc.dir}"> <include name="junit-frames.xsl"/> <include name="junit-noframes.xsl"/> </fileset> </copy> </target> <!-- =================================================================== Create the all of the Apache Ant jars =================================================================== --> <target name="jars" depends="build" description="--> creates the Apache Ant jars"> <copy todir="${build.dir}"> <fileset dir="${basedir}"> <include name="LICENSE"/> <include name="LICENSE.xerces"/> <include name="LICENSE.dom"/> <include name="LICENSE.sax"/> <include name="NOTICE"/> </fileset> <mapper type="glob" from="*" to="*.txt"/> </copy> <copy file="${manifest}" tofile="${manifest.tmp}"/> <manifest file="${manifest.tmp}"> <section name="${optional.package}/"> <attribute name="Extension-name" value="org.apache.tools.ant"/> <attribute name="Specification-Title" value="Apache Ant"/> <attribute name="Specification-Version" value="${manifest-version}"/> <attribute name="Specification-Vendor" value="Apache Software Foundation"/> <attribute name="Implementation-Title" value="org.apache.tools.ant"/> <attribute name="Implementation-Version" value="${manifest-version}"/> <attribute name="Implementation-Vendor" value="Apache Software Foundation"/> </section> </manifest> <jar destfile="${build.lib}/${name}-launcher.jar" basedir="${build.classes}" whenmanifestonly="fail"> <selector refid="ant.launcher"/> <manifest> <attribute name="Main-Class" value="org.apache.tools.ant.launch.Launcher"/> </manifest> </jar> <jar destfile="${build.lib}/${name}.jar" basedir="${build.classes}" manifest="${manifest}" whenmanifestonly="fail"> <not> <selector id="non-core"> <or> <filename name="${optional.package}/**"/> <filename name="${optional.type.package}/**"/> <filename name="${util.package}/depend/**"/> <filename name="${util.package}/optional/**"/> <selector refid="needs.apache-log4j"/> <selector refid="needs.commons-logging"/> <selector refid="needs.apache-bcel"/> <selector refid="needs.apache-bsf"/> <selector refid="needs.apache-regexp"/> <selector refid="needs.apache-resolver"/> <selector refid="needs.apache-oro"/> <selector refid="needs.jdk1.4+"/> <selector refid="needs.jdk1.5+"/> <selector refid="needs.javamail"/> <selector refid="ant.launcher"/> </or> </selector> </not> <metainf dir="${build.dir}"> <include name="LICENSE.txt"/> <include name="NOTICE.txt"/> </metainf> <manifest> <section name="${ant.package}/"> <attribute name="Extension-name" value="org.apache.tools.ant"/> <attribute name="Specification-Title" value="Apache Ant"/> <attribute name="Specification-Version" value="${manifest-version}"/> <attribute name="Specification-Vendor" value="Apache Software Foundation"/> <attribute name="Implementation-Title" value="org.apache.tools.ant"/> <attribute name="Implementation-Version" value="${manifest-version}"/> <attribute name="Implementation-Vendor" value="Apache Software Foundation"/> </section> </manifest> <fileset dir="${docs.dir}"> <include name="images/ant_logo_large.gif"/> </fileset> </jar> <jar destfile="${build.lib}/${bootstrap.jar}" basedir="${build.classes}" manifest="${manifest}" whenmanifestonly="fail"> <include name="${ant.package}/Main.class"/> <metainf dir="${build.dir}"> <include name="LICENSE.txt"/> <include name="NOTICE.txt"/> </metainf> <manifest> <attribute name="Class-Path" value="ant.jar xml-apis.jar xercesImpl.jar xalan.jar"/> </manifest> </jar> <jar destfile="${build.lib}/ant-nodeps.jar" basedir="${build.classes}" manifest="${manifest.tmp}" whenmanifestonly="${optional.jars.whenmanifestonly}"> <and> <selector refid="non-core"/> <not> <or> <selector refid="ant.launcher"/> <selector refid="needs.trax"/> <selector refid="needs.apache-resolver"/> <selector refid="needs.junit"/> <selector refid="needs.apache-regexp"/> <selector refid="needs.apache-oro"/> <selector refid="needs.apache-bcel"/> <selector refid="needs.apache-log4j"/> <selector refid="needs.commons-logging"/> <selector refid="needs.apache-bsf"/> <selector refid="needs.stylebook"/> <selector refid="needs.javamail"/> <selector refid="needs.netrexx"/> <selector refid="needs.weblogic.ejbc"/> <selector refid="needs.weblogic.ddcreator"/> <selector refid="needs.weblogic.server"/> <selector refid="needs.commons-net"/> <selector refid="needs.starteam"/> <selector refid="needs.antlr"/> <selector refid="needs.jmf"/> <selector refid="needs.jai"/> <selector refid="needs.jdepend"/> <selector refid="needs.swing"/> <selector refid="needs.jsch"/> </or> </not> </and> <metainf dir="${build.dir}"> <include name="LICENSE.txt"/> <include name="NOTICE.txt"/> </metainf> </jar> <macrodef name="optional-jar"> <attribute name="dep"/> <sequential> <jar destfile="${build.lib}/${optional.jars.prefix}-@{dep}.jar" basedir="${build.classes}" manifest="${manifest.tmp}" whenmanifestonly="${optional.jars.whenmanifestonly}"> <selector refid="needs.@{dep}"/> </jar> </sequential> </macrodef> <optional-jar dep="trax"/> <optional-jar dep="apache-resolver"/> <optional-jar dep="junit"/> <optional-jar dep="apache-regexp"/> <optional-jar dep="apache-oro"/> <optional-jar dep="apache-bcel"/> <optional-jar dep="apache-log4j"/> <optional-jar dep="commons-logging"/> <optional-jar dep="apache-bsf"/> <optional-jar dep="stylebook"/> <optional-jar dep="javamail"/> <optional-jar dep="netrexx"/> <optional-jar dep="commons-net"/> <optional-jar dep="starteam"/> <optional-jar dep="antlr"/> <optional-jar dep="jmf"/> <optional-jar dep="jai"/> <optional-jar dep="swing"/> <optional-jar dep="jsch"/> <optional-jar dep="jdepend"/> <jar destfile="${build.lib}/${optional.jars.prefix}-weblogic.jar" basedir="${build.classes}" manifest="${manifest.tmp}" whenmanifestonly="${optional.jars.whenmanifestonly}"> <or> <selector refid="needs.weblogic.ejbc"/> <selector refid="needs.weblogic.ddcreator"/> <selector refid="needs.weblogic.server"/> </or> </jar> </target> <!-- Creates jar of test utility classes --> <target name="test-jar" depends="compile-tests" description="--> creates the Apache Ant Test Utilities jar"> <fail unless="junit.present"> We cannot build the test jar unless JUnit is present, as JUnit is needed to compile the test classes. </fail> <jar destfile="${build.lib}/${name}-testutil.jar" basedir="${build.tests}"> <patternset refid="useful.tests"/> </jar> </target> <!-- =================================================================== Create the essential distribution that can run Apache Ant =================================================================== --> <target name="dist-lite" depends="jars,test-jar" description="--> creates a minimum distribution to run Apache Ant"> <mkdir dir="${dist.dir}"/> <mkdir dir="${dist.bin}"/> <mkdir dir="${dist.lib}"/> <copy todir="${dist.lib}"> <fileset dir="${build.lib}"> <exclude name="${bootstrap.jar}"/> </fileset> </copy> <copy todir="${dist.lib}"> <fileset dir="${lib.dir}"> <include name="*.jar"/> <include name="*.zip"/> </fileset> </copy> <copy todir="${dist.bin}"> <fileset dir="${script.dir}"/> </copy> <fixcrlf srcdir="${dist.bin}" eol="dos" includes="*.bat,*.cmd"/> <fixcrlf srcdir="${dist.bin}" eol="unix"> <include name="ant"/> <include name="antRun"/> <include name="*.pl"/> </fixcrlf> <chmod perm="ugo+rx" dir="${dist.dir}" type="dir" includes="**" failonerror="${chmod.fail}"/> <chmod perm="ugo+r" dir="${dist.dir}" type="file" includes="**" failonerror="${chmod.fail}" maxparallel="${chmod.maxparallel}"/> <chmod perm="ugo+x" type="file" failonerror="${chmod.fail}"> <fileset dir="${dist.bin}"> <include name="**/ant"/> <include name="**/antRun"/> <include name="**/*.pl"/> <include name="**/*.py"/> </fileset> </chmod> </target> <!-- =================================================================== Create the complete distribution =================================================================== --> <target name="dist" description="--> creates a complete distribution"> <antcall inheritAll="false" target="internal_dist"> <param name="dist.dir" value="${dist.name}"/> </antcall> </target> <target name="dist_javadocs" depends="javadocs"> <mkdir dir="${dist.javadocs}"/> <copy todir="${dist.javadocs}" overwrite="true"> <fileset dir="${build.javadocs}"/> </copy> </target> <target name="internal_dist" depends="dist-lite,dist_javadocs"> <mkdir dir="${dist.docs}"/> <mkdir dir="${dist.etc}"/> <copy todir="${dist.lib}" file="${lib.dir}/README"/> <copy todir="${dist.lib}" file="${lib.dir}/libraries.properties"/> <copy todir="${dist.lib}"> <fileset dir="${src.dir}/etc/poms"> <include name="*/pom.xml"/> </fileset> <mapper type="regexp" from="^(.*)[/\\]pom.xml" to="\1-${project.version}.pom"/> <filterchain> <tokenfilter> <replaceregex pattern="${pom.version}" replace="${project.version}"/> </tokenfilter> </filterchain> </copy> <copy todir="${dist.lib}"> <fileset dir="${src.dir}/etc/poms"> <include name="pom.xml"/> </fileset> <mapper type="glob" from="pom.xml" to="ant-parent-${project.version}.pom"/> <filterchain> <tokenfilter> <replaceregex pattern="${pom.version}" replace="${project.version}"/> </tokenfilter> </filterchain> </copy> <checksum algorithm="md5"> <fileset dir="${dist.lib}"> <include name="*.pom"/> </fileset> </checksum> <checksum algorithm="sha1"> <fileset dir="${dist.lib}"> <include name="*.pom"/> </fileset> </checksum> <copy todir="${dist.docs}"> <fileset dir="${docs.dir}" excludes="${unfiltered.files}"> <patternset refid="site.excludes"/> </fileset> <filterchain refid="ant.filters"/> </copy> <copy todir="${dist.docs}" filtering="false"> <fileset dir="${docs.dir}" includes="${unfiltered.files}"> <patternset refid="site.excludes"/> </fileset> </copy> <copy todir="${dist.dir}"> <fileset dir="${basedir}"> <include name="README"/> <include name="INSTALL"/> <include name="LICENSE"/> <include name="LICENSE.xerces"/> <include name="LICENSE.dom"/> <include name="LICENSE.sax"/> <include name="NOTICE"/> <include name="TODO"/> <include name="WHATSNEW"/> <include name="KEYS"/> <include name="fetch.xml"/> <include name="get-m2.xml"/> </fileset> </copy> <chmod perm="ugo+rx" dir="${dist.dir}" type="dir" includes="**" failonerror="${chmod.fail}"/> <chmod perm="ugo+r" dir="${dist.dir}" type="file" includes="**" failonerror="${chmod.fail}" maxparallel="${chmod.maxparallel}"/> <chmod perm="ugo+x" type="file" failonerror="${chmod.fail}"> <fileset dir="${dist.bin}"> <include name="**/ant"/> <include name="**/antRun"/> <include name="**/*.pl"/> <include name="**/*.py"/> </fileset> </chmod> <!-- publish some useful stylesheets --> <copy todir="${dist.etc}"> <fileset dir="${etc.dir}"> <include name="junit-frames.xsl"/> <include name="junit-noframes.xsl"/> <include name="junit-frames-xalan1.xsl"/> <include name="coverage-frames.xsl"/> <include name="maudit-frames.xsl"/> <include name="mmetrics-frames.xsl"/> <include name="changelog.xsl"/> <include name="jdepend.xsl"/> <include name="jdepend-frames.xsl"/> <include name="checkstyle/*.xsl"/> <include name="log.xsl"/> <include name="tagdiff.xsl"/> </fileset> <fileset dir="${build.lib}"> <include name="${bootstrap.jar}"/> </fileset> </copy> </target> <!-- =================================================================== Target to create bootstrap build =================================================================== --> <target name="bootstrap" description="--> creates a bootstrap build"> <antcall inheritAll="false" target="dist-lite"> <param name="dist.dir" value="${bootstrap.dir}"/> </antcall> </target> <!-- =================================================================== Create the source distribution =================================================================== --> <target name="src-dist" description="--> creates a source distribution"> <mkdir dir="${src.dist.dir}"/> <copy todir="${src.dist.lib}"> <fileset dir="${lib.dir}"> <include name="*.jar"/> <include name="*.zip"/> <include name="README"/> <include name="libraries.properties"/> </fileset> </copy> <copy todir="${src.dist.src}"> <fileset dir="${src.dir}"/> </copy> <copy todir="${src.dist.docs}"> <fileset dir="${docs.dir}"> <exclude name="manual/api/**"/> <patternset refid="site.excludes"/> </fileset> </copy> <copy todir="${src.dist.dir}"> <fileset dir="${basedir}"> <include name="README"/> <include name="INSTALL"/> <include name="LICENSE"/> <include name="LICENSE.xerces"/> <include name="LICENSE.dom"/> <include name="LICENSE.sax"/> <include name="NOTICE"/> <include name="TODO"/> <include name="WHATSNEW"/> <include name="KEYS"/> <include name="build.bat"/> <include name="build.sh"/> <include name="bootstrap.bat"/> <include name="bootstrap.sh"/> <include name="build.xml"/> <include name="fetch.xml"/> <include name="get-m2.xml"/> </fileset> </copy> <fixcrlf srcdir="${src.dist.dir}" eol="dos" includes="*.bat,*.cmd"/> <fixcrlf srcdir="${src.dist.dir}" eol="unix"> <include name="**/*.sh"/> <include name="**/*.pl"/> <include name="**/ant"/> <include name="**/antRun"/> </fixcrlf> <fixcrlf srcdir="${src.dist.dir}"> <include name="**/*.java"/> <exclude name="${tests.etc.dir}/taskdefs/fixcrlf/expected/Junk?.java"/> <exclude name="${tests.etc.dir}/taskdefs/fixcrlf/input/Junk?.java"/> </fixcrlf> <chmod perm="ugo+x" dir="${src.dist.dir}" type="dir" failonerror="${chmod.fail}"/> <chmod perm="ugo+r" dir="${src.dist.dir}" failonerror="${chmod.fail}"/> <chmod perm="ugo+x" failonerror="${chmod.fail}"> <fileset dir="${src.dist.dir}"> <include name="**/.sh"/> <include name="**/.pl"/> <include name="**/.py"/> <include name="**/ant"/> <include name="**/antRun"/> </fileset> </chmod> </target> <!-- =================================================================== Create the binary distribution =================================================================== --> <target name="main_distribution" description="--> creates the zip and tar distributions"> <delete dir="${dist.base}"/> <delete dir="${dist.name}"/> <delete dir="${java-repository.dir}"/> <mkdir dir="${dist.base}"/> <mkdir dir="${dist.base.source}"/> <mkdir dir="${dist.base.binaries}"/> <mkdir dir="${java-repository.jars.dir}"/> <mkdir dir="${java-repository.poms.dir}"/> <antcall inheritAll="false" target="internal_dist"> <param name="dist.dir" value="${dist.name}"/> </antcall> <zip destfile="${dist.base.binaries}/${dist.name}-bin.zip"> <zipfileset dir="${dist.name}/.." filemode="755"> <include name="${dist.name}/bin/ant"/> <include name="${dist.name}/bin/antRun"/> <include name="${dist.name}/bin/*.pl"/> <include name="${dist.name}/bin/*.py"/> </zipfileset> <fileset dir="${dist.name}/.."> <include name="${dist.name}/**"/> <exclude name="${dist.name}/bin/ant"/> <exclude name="${dist.name}/bin/antRun"/> <exclude name="${dist.name}/bin/*.pl"/> <exclude name="${dist.name}/bin/*.py"/> </fileset> </zip> <tar longfile="gnu" destfile="${dist.base.binaries}/${dist.name}-bin.tar"> <!-- removes redundant definition of permissions, but seems to drop dirs (and to be slow) <zipfileset src="${dist.base.binaries}/${dist.name}-bin.zip"/> --> <tarfileset dir="${dist.name}/.." mode="755" username="ant" group="ant"> <include name="${dist.name}/bin/ant"/> <include name="${dist.name}/bin/antRun"/> <include name="${dist.name}/bin/*.pl"/> <include name="${dist.name}/bin/*.py"/> </tarfileset> <tarfileset dir="${dist.name}/.." username="ant" group="ant"> <include name="${dist.name}/**"/> <exclude name="${dist.name}/bin/ant"/> <exclude name="${dist.name}/bin/antRun"/> <exclude name="${dist.name}/bin/*.pl"/> <exclude name="${dist.name}/bin/*.py"/> </tarfileset> </tar> <gzip destfile="${dist.base.binaries}/${dist.name}-bin.tar.gz" src="${dist.base.binaries}/${dist.name}-bin.tar"/> <bzip2 destfile="${dist.base.binaries}/${dist.name}-bin.tar.bz2" src="${dist.base.binaries}/${dist.name}-bin.tar"/> <delete file="${dist.base.binaries}/${dist.name}-bin.tar"/> <copy todir="${java-repository.jars.dir}"> <fileset dir="${dist.name}/lib"> <include name="ant*.jar"/> </fileset> <mapper type="glob" from="*.jar" to="*-${project.version}.jar"/> </copy> <copy todir="${java-repository.poms.dir}"> <fileset dir="${dist.name}/lib"> <include name="*.pom"/> <include name="*.sha1"/> <include name="*.md5"/> </fileset> <mapper> <mapper type="glob" from="*.pom" to="*.pom"/> <mapper type="glob" from="*.pom.sha1" to="*.pom.sha1"/> <mapper type="glob" from="*.pom.md5" to="*.pom.md5"/> </mapper> </copy> <checksum fileext=".md5"> <fileset dir="${java-repository.jars.dir}" includes="*${project.version}.jar"/> </checksum> <checksum fileext=".sha1" algorithm="SHA"> <fileset dir="${java-repository.jars.dir}" includes="*${project.version}.jar"/> </checksum> <delete dir="${dist.name}"/> <checksum fileext=".md5"> <fileset dir="${dist.base.binaries}/"> <include name="**/*"/> <exclude name="**/*.asc"/> <exclude name="**/*.md5"/> </fileset> </checksum> <checksum fileext=".sha1" algorithm="SHA"> <fileset dir="${dist.base.binaries}/"> <include name="**/*"/> <exclude name="**/*.asc"/> <exclude name="**/*.md5"/> </fileset> </checksum> <antcall inheritAll="false" target="src-dist"> <param name="src.dist.dir" value="${dist.name}"/> </antcall> <zip destfile="${dist.base.source}/${dist.name}-src.zip"> <zipfileset dir="${dist.name}/.." filemode="755"> <include name="${dist.name}/bootstrap.sh"/> <include name="${dist.name}/build.sh"/> </zipfileset> <fileset dir="${dist.name}/.."> <include name="${dist.name}/**"/> <exclude name="${dist.name}/bootstrap.sh"/> <exclude name="${dist.name}/build.sh"/> </fileset> </zip> <tar longfile="gnu" destfile="${dist.base.source}/${dist.name}-src.tar"> <!-- <zipfileset src="${dist.base.source}/${dist.name}-src.zip"/> --> <tarfileset dir="${dist.name}/.." mode="755" username="ant" group="ant"> <include name="${dist.name}/bootstrap.sh"/> <include name="${dist.name}/build.sh"/> </tarfileset> <tarfileset dir="${dist.name}/.." username="ant" group="ant"> <include name="${dist.name}/**"/> <exclude name="${dist.name}/bootstrap.sh"/> <exclude name="${dist.name}/build.sh"/> </tarfileset> </tar> <gzip destfile="${dist.base.source}/${dist.name}-src.tar.gz" src="${dist.base.source}/${dist.name}-src.tar"/> <bzip2 destfile="${dist.base.source}/${dist.name}-src.tar.bz2" src="${dist.base.source}/${dist.name}-src.tar"/> <delete file="${dist.base.source}/${dist.name}-src.tar"/> <delete dir="${dist.name}"/> <checksum fileext=".md5"> <fileset dir="${dist.base.source}/"> <include name="**/*"/> <exclude name="**/*.asc"/> <exclude name="**/*.md5"/> </fileset> </checksum> <checksum fileext=".sha1" algorithm="SHA"> <fileset dir="${dist.base.source}/"> <include name="**/*"/> <exclude name="**/*.asc"/> <exclude name="**/*.md5"/> </fileset> </checksum> </target> <target name="distribution" depends="main_distribution" description="--> creates the full Apache Ant distribution"> </target> <!-- =================================================================== Upload the distribution to cvs.apache.org for final releases =================================================================== --> <target name="init-upload" > <fail unless="apache.user" message="set a property apache.user with your apache user"/> <fail unless="ssh.passphrase" message="set a property with your ssh passphrase"/> <fail unless="ssh.keyfile" message="set a property with your ssh keyfile"/> <property name="ssh.knownhosts" location="${user.home}/.ssh/known_hosts" /> <property name="ssh.host" value="cvs.apache.org"/> <property name="ssh.verbose" value="false"/> <property name="ssh.base.directory" value="/www/www.apache.org/dist"/> <property name="ssh.dist.directory" value="${ssh.base.directory}/ant"/> <property name="ssh.java-repository.directory" value="/www/people.apache.org/repo/m1-ibiblio-rsync-repository/ant"/> <echo > Uploading Ant version ${project.version} to host ${ssh.host} as ${apache.user} distribution to ${ssh.dist.directory} JAR files to ${ssh.java-repository.directory}/jars POM files to ${ssh.java-repository.directory}/poms Known hosts = ${ssh.knownhosts} </echo> </target> <!-- create the directories if absent--> <target name="ssh-mkdirs" depends="init-upload"> <sshexec username="${apache.user}" host="${ssh.host}" keyfile="${ssh.keyfile}" passphrase="${ssh.passphrase}" knownhosts="${ssh.knownhosts}" command="mkdir -p ${ssh.dist.directory}" /> <sshexec username="${apache.user}" host="${ssh.host}" keyfile="${ssh.keyfile}" passphrase="${ssh.passphrase}" knownhosts="${ssh.knownhosts}" command="mkdir -p ${ssh.java-repository.directory}/jars"/> <sshexec username="${apache.user}" host="${ssh.host}" keyfile="${ssh.keyfile}" passphrase="${ssh.passphrase}" knownhosts="${ssh.knownhosts}" command="mkdir -p ${ssh.java-repository.directory}/poms"/> </target> <target name="upload" description="--> uploads the distribution" depends="init-upload,ssh-mkdirs"> <scp todir="${apache.user}@${ssh.host}:${ssh.dist.directory}" keyfile="${ssh.keyfile}" passphrase="${ssh.passphrase}" knownhosts="${ssh.knownhosts}" verbose="${ssh.verbose}" > <fileset dir="${dist.base}"> <include name="**/*${project.version}*"/> </fileset> </scp> <scp todir="${apache.user}@${ssh.host}:${ssh.java-repository.directory}" keyfile="${ssh.keyfile}" passphrase="${ssh.passphrase}" knownhosts="${ssh.knownhosts}" verbose="${ssh.verbose}"> <fileset dir="java-repository/ant"> <include name="*/*${project.version}*"/> </fileset> </scp> </target> <!-- =================================================================== Cleans up build and distribution directories =================================================================== --> <target name="clean" description="--> cleans up build and dist directories"> <delete dir="${build.dir}"/> <delete dir="${dist.base}"/> <delete dir="${dist.dir}"/> <delete> <fileset dir="." includes="**/*~" defaultexcludes="no"/> </delete> </target> <!-- =================================================================== Cleans everything =================================================================== --> <target name="allclean" depends="clean" description="--> cleans up everything"> <delete file="${bootstrap.dir}/bin/antRun"/> <delete file="${bootstrap.dir}/bin/antRun.bat"/> <delete file="${bootstrap.dir}/bin/*.pl"/> <delete file="${bootstrap.dir}/bin/*.py"/> </target> <!-- =================================================================== Installs Apache Ant =================================================================== --> <target name="install" if="ant.install"> <antcall inheritAll="false" target="internal_dist"> <param name="dist.dir" value="${ant.install}"/> </antcall> </target> <target name="install-lite" if="ant.install"> <antcall inheritAll="false" target="dist-lite"> <param name="dist.dir" value="${ant.install}"/> </antcall> </target> <!-- =================================================================== Creates the API documentation =================================================================== --> <target name="javadoc_check"> <uptodate property="javadoc.notrequired" targetfile="${build.javadocs}/packages.html"> <srcfiles dir="${java.dir}" includes="**/*.java"/> </uptodate> <uptodate property="tests.javadoc.notrequired" targetfile="${build.tests.javadocs}/packages.html"> <srcfiles dir="${src.junit}"> <patternset refid="useful.tests"/> </srcfiles> </uptodate> </target> <target name="javadocs" depends="prepare, javadoc_check" unless="javadoc.notrequired" description="--> creates the API documentation"> <mkdir dir="${build.javadocs}"/> <javadoc useexternalfile="yes" destdir="${build.javadocs}" author="true" version="true" locale="en" windowtitle="${Name} API" doctitle="${Name}" verbose="${javadoc.verbose}"> <packageset dir="${java.dir}"/> <!-- hide some meta information for javadoc --> <tag name="todo" description="To do:" scope="all"/> <tag name="ant.task" enabled="false" description="Task:" scope="types"/> <tag name="ant.datatype" enabled="false" description="Data type:" scope="types"/> <tag name="ant.attribute" enabled="false" description="Attribute:" scope="types"/> <tag name="ant.attribute.group" enabled="false" description="Attribute group:" scope="types"/> <tag name="ant.element" enabled="false" description="Nested element:" scope="types"/> <group title="Apache Ant Core" packages="org.apache.tools.ant*"/> <group title="Core Tasks" packages="org.apache.tools.ant.taskdefs*"/> <group title="Core Types" packages="org.apache.tools.ant.types*"/> <group title="Optional Tasks" packages="org.apache.tools.ant.taskdefs.optional*"/> <group title="Optional Types" packages="org.apache.tools.ant.types.optional*"/> <group title="Ant Utilities" packages="org.apache.tools.ant.util*"/> </javadoc> </target> <target name="test-javadocs" depends="prepare, javadoc_check" unless="tests.javadoc.notrequired" description="--> creates the API documentation for test utilities"> <mkdir dir="${build.tests.javadocs}"/> <javadoc useexternalfile="yes" destdir="${build.tests.javadocs}" author="true" version="true" locale="en" windowtitle="${Name} Test Utilities" doctitle="${Name}"> <!-- hide some meta information for javadoc --> <tag name="pre" description="Precondition:" scope="all"/> <fileset dir="${src.junit}"> <patternset refid="useful.tests"/> </fileset> </javadoc> </target> <!-- =================================================================== Compile testcases =================================================================== --> <target name="compile-tests" depends="build" if="junit.present"> <mkdir dir="${build.tests}"/> <javac srcdir="${src.junit}" destdir="${build.tests}" debug="${debug}" target="${javac.target}" source="${javac.source}" deprecation="${deprecation}"> <classpath refid="tests-classpath"/> <selector refid="conditional-patterns"/> </javac> <!-- Used by AntlibTest.testAntlibResource: --> <jar jarfile="${build.tests}/org/apache/tools/ant/taskdefs/test2-antlib.jar"> <zipfileset dir="${tests.etc.dir}" fullpath="taskdefs/test.antlib.xml"> <include name="taskdefs/test2.antlib.xml"/> </zipfileset> </jar> </target> <target name="dump-info" depends="dump-sys-properties,run-which"/> <target name="dump-sys-properties" unless="which.present" depends="xml-check"> <echo message="java.vm.info=${java.vm.info}"/> <echo message="java.vm.name=${java.vm.name}"/> <echo message="java.vm.vendor=${java.vm.vendor}"/> <echo message="java.vm.version=${java.vm.version}"/> <echo message="os.arch=${os.arch}"/> <echo message="os.name=${os.name}"/> <echo message="os.version=${os.version}"/> <echo message="file.encoding=${file.encoding}"/> <echo message="user.language=${user.language}"/> <echo message="ant.version=${ant.version}"/> </target> <!-- helper class from Xalan2 to check for jar versioning of xml/xsl processors --> <target name="xml-check" depends="check_for_optional_packages" if="xalan.envcheck" unless="which.present"> <java classname="org.apache.xalan.xslt.EnvironmentCheck"/> </target> <target name="run-which" depends="check_for_optional_packages" if="which.present"> <java classname="org.apache.env.Which" taskname="which"/> </target> <!-- test to see if we are online or not. can take a while when we are off line, so setting the property is a good shortcut--> <target name="probe-offline"> <condition property="offline"> <or> <isset property="offline"/> <not> <http url="http://www.apache.org/"/> </not> </or> </condition> <echo level="verbose"> offline=${offline} </target> <!-- =================================================================== Run testcase =================================================================== --> <target name="check-failed"> <condition property="tests.failed"> <or> <isset property="junit.failed" /> <isset property="antunit.failed" /> </or> </condition> </target> <target name="test" description="--> run unit tests and reports" depends="dump-info,junit-report,antunit-report,check-failed"> <fail if="tests.failed">Unit tests failed; see ${build.junit.reports} / ${antunit.reports} </fail> </target> <target name="run-tests" depends="dump-info,junit-tests,antunit-tests,check-failed" description="--> run unit tests without reports"> <fail if="tests.failed" message="Unit tests failed" /> </target> <target name="test-init" depends="probe-offline,check_for_optional_packages"> <macrodef name="test-junit"> <element name="junit-nested" implicit="true" /> <sequential> <mkdir dir="${build.junit.xml}" /> <property name="test.junit.vmargs" value=""/> <junit printsummary="${junit.summary}" haltonfailure="${test.haltonfailure}" fork="${junit.fork}" forkmode="${junit.forkmode}" failureproperty="junit.failed" errorproperty="junit.failed" filtertrace="${junit.filtertrace}"> <sysproperty key="ant.home" value="${ant.home}"/> <sysproperty key="build.tests" file="${build.tests}"/> <sysproperty key="build.tests.value" value="${build.tests.value}"/> <sysproperty key="offline" value="${offline}"/> <sysproperty key="tests-classpath.value" value="${tests-classpath.value}"/> <sysproperty key="root" file="${basedir}"/> <sysproperty key="build.compiler" value="${build.compiler}"/> <sysproperty key="tests.and.ant.share.classloader" value="${tests.and.ant.share.classloader}"/> <classpath refid="tests-classpath"/> <formatter type="xml"/> <jvmarg line="${test.junit.vmargs}"/> <junit-nested /> </junit> </sequential> </macrodef> <fail>"testcase" cannot be specified with "junit.testcase" or "antunit.testcase". <condition> <and> <isset property="testcase" /> <or> <isset property="antunit.testcase" /> <isset property="junit.testcase" /> </or> </and> </condition> </fail> <condition property="antunit.testcase" value="${testcase}"> <available file="${src.antunit}/${testcase}" /> </condition> <condition property="junit.testcase" value="${testcase}"> <available classname="${testcase}" classpathref="tests-classpath" /> </condition> <fail>Cannot locate test ${testcase} <condition> <and> <isset property="testcase" /> <not> <or> <isset property="antunit.testcase" /> <isset property="junit.testcase" /> </or> </not> </and> </condition> </fail> <condition property="run.junit"> <and> <not> Other Ant examples (source code examples)Here is a short list of links related to this Ant build.xml source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.