为了条理地介绍Ant,下面我分几部分来介绍Ant:
<!--
All properties should be defined in this section.Any host-specific properties should be defined
in the build.properties file.
In this app,the following properties are defined in build.properties:
1.tomcat.home === the home directory of your Tomcat installation
2.webapps.home === the place to copy the war file to deploy it.
-->
<property file="build.properties"/>
<property name="app.home" value="."/>
<property name="app.name" value="application"/>
<property name="javadoc.pkg.top" value="encrypt"/>
<property name="src.home" value="${app.home}/src"/>
<property name="lib.home" value="${app.home}/lib"/>
<property name="classes.home" value="${app.home}/classes"/>
<property name="deploy.home" value="${app.home}/deploy"/>
<property name="doc.home" value="${app.home}/doc"/>
<property name="web.home" value="${app.home}/WebRoot"/>
<property name="build.home" value="${app.home}/build"/>
<property name="build.classes" value="${build.home}/WEB-INF/classes"/>
<property name="build.lib" value="${build.home}/WEB-INF/lib"/>
<!--Compilatin Classpath-->
<!-- This section creates the classpath for compilation-->
<path id="compile.classpath">
<!--The lib files for this application-->
<fileset dir="${lib.home}">
<include name="*.jar"/>
<include name="*.zip"/>
</fileset>
<!--All files/jars that Tomcat makes available-->
<fileset dir="${tomcat.home}/common/lib">
<include name="*.jar"/>
</fileset>
<pathelement location="${tomcat.home}/common/classes"/>
</path>
<!--==========help targe==========-->
<!--This is the default ant target executed if no target is specified.
This helps avoid user just typed 'ant' and runing a default target
that may not do what they are anticipating
-->
<target name="help">
<echo message="Please specify a target![usage:ant <targetname>]"/>
<echo message="Here is a list of possible targets:"/>
<echo message=" clean-all .....Delete all dir,all.class and war files"/>
<echo message=" prepare .....Create directories if required"/>
<echo message=" compile .....Compiles source file"/>
<echo message=" build .....Build war file form.class and other files"/>
<echo message=" deploy .....Copy war files to the webapps directory"/>
<echo message=" javadoc .....Generates javadoc for this application"/>
</target>
<!--=========="clean-all" target==========-->
<target name="clean">
<delete dir="${build.home}"/>
<delete dir="${classes.home}"/>
<delete dir="${deploy.home}"/>
<!--cannot delete directory if tomcat is runing-->
<delete dir="${webapps.home}/${app.home}" failonerror="false"/>
<delete dir="${webapps.home}/S{app.name}.war"/>
<!--delete javadoc-->
<delete dir="${doc.home}"/>
</target>
<!---==========="prepare" target===========-->
<!-- This target is executed prior to any of the later targets
to make sure the directories exist.It only creates them if
they need to be created...
Other,similar,preparation steps can be placed here
-->
<target name="prepare">
<echo message="Tomcat Home =${tomcat.home}"/>
<echo message = "webapps Home = ${webapps.home}"/>
<mkdir dir="${classes.home}"/>
<mkdir dir="${deploy.home}"/>
<mkdir dir="${doc.home}"/>
<mkdir dir="${doc.home}/api"/>
<mkdir dir="${build.home}"/>
<mkdir dir="${build.home}/WEB-INF"/>
<mkdir dir="${build.home}/WEB-INF/classes"/>
<mkdir dir="${build.home}/WEB-INF/lib"/>
</target>
<!--=========="compile" target==========-->
<!--This only compiles java files that are newer
than their corresponing.class files
-->
<target name="compile" depends ="prepare">
<javac srcdir="${src.home}" destdir="${classes.home}" debug="yes">
<classpath refid = "compile.classpath"/>
</javac>
</target>
<!--============"build" target=============-->
<!--This target builds the war file for the application by
first building the directory structure of the application
in ${build.home} and then creating the war file using the
ant <war> task
-->
<target name="build" depends="compile">
<!--Copy all the wabapp content(jsp's,html,tld's,xml,etc...-->
<copy todir="${build.home}">
<fileset dir="${web.home}"/>
</copy>
<!--copy all java class files-->
<copy todir="${build.home}/WEB-INF/classes">
<fileset dir="${classes.home}"/>
</copy>
<!--Now, copy all the properties files,etc that go on the classpath-->
<copy todir="${build.home}/WEB-INF/classes">
<fileset dir="${src.home}">
<include name="**/*.properties"/>
<include name="**/*.prop"/>
</fileset>
</copy>
<!--Now,copy all the jar files we need-->
<copy todir="${build.home}/WEB-INF/lib">
<fileset dir="${lib.home}"/>
</copy>
<!--create the <war> file-->
<jar jarfile="${deploy.home}/${app.name}.war" basedir="${build.home}"/>
</target>
<!--================"deploy" target============-->
<!-- This target simply copies the war file from the deploy
directory into the Tomcat webapps directory.
-->
<target name="deploy" depends="build">
<!--copy the contents of the build directory-->
<copy todir="${webapps.home}" file="${deploy.home}/${app.name}.war"/>
</target>
<!--================="doc" target=========-->
<!-- This task create javadoc.It is dependent upon only the 'compile' target
it is not executed in a normal build.As a result,the target needs to
be run on its own.
-->
<target name="javadoc" depends="compile">
<javadoc sourcepath="${src.home}" destdir="${doc.home}/api"
packagenames="${javadoc.pkg.top}.*"/>
</target>
</project>
webapps.home=F:\\Java\\Tomcat 5.5\\webapps
上一篇介绍了一下Ant的产生和特点,在最后给大家看看了build.xml。其实Ant的核心就是build.xm。如何编写适合自己工程的build.xml是最重要的。
webapps.home=F:\\Java\\Tomcat 5.5\\webapps
<javac srcdir="${src.home}" destdir="${classes.home}" debug="yes">
<classpath refid = "compile.classpath"/>
</javac>
</target>
<echo>Files foo.txt and bar.txt are present.</echo>
</target>
<target name="myTarget.check">
<condition property="myTarget.run">
<and>
<available file="foo.txt"/>
<available file="bar.txt"/>
</and>
</condition>
</target>
Attribute | Description | Required |
dir | the directory to create. | Yes |
Example:
<mkdir dir="${dist}"/>
${dist}
.<mkdir dir="${dist}/lib"/>
${dist}/lib
.