Section 4.2. Preparing to Deploy


4.2. Preparing to Deploy

Ant supports several tasks for setting up a deployment environment, such as delete and mkdir. Both these tasks can be used locally or on a network to set up the directory structure you need to deploy applications.

If you want to create and delete directories remotely, take a look at the ftp task, coming up later in this chapter.


4.2.1. Deleting Existing Files

When deploying, delete is great to clean up a previous installation or to clean deployment directories before installing. This task deletes a single file, a directory and all its files and subdirectories, or a set of files specified by one or more FileSets.

Using this task, you can delete a single file:

<delete file="/lib/Project.jar"/>

Or you can delete an entire directory, including all files and subdirectories:

<delete dir="${dist}"/>

You can use filesets:

<delete includeEmptyDirs="true">     <fileset dir="${dist}"/> </delete>

You've seen delete at work in various places throughout the book, as in the build file in the input folder for Chapter 3s code (repeated in Example 4-2), where the user is asked for confirmation before deleting anything.

Example 4-2. Using the delete task (ch03/input/build.xml)
<?xml version="1.0" ?> <project default="main">     <property name="message" value="Building the .jar file." />     <property name="src" location="source" />     <property name="output" location="bin" />     <target name="main" depends="init, compile, compress">         <echo>             ${message}         </echo>     </target>        <target name="init">         <input             message="Deleting bin directory OK?"             validargs="y,n"             addproperty="do.delete"         />         <condition property="do.abort">             <equals arg1="n" arg2="${do.delete}"/>         </condition>         <fail if="do.abort">Build aborted.</fail>         <delete dir="${output}" />         <mkdir dir="${output}" />     </target>        <target name="compile">         <javac srcdir="${src}" destdir="${output}" />     </target>      <target name="compress">         <jar destfile="${output}/Project.jar" basedir="${output}" includes="*.class" />   </target> </project>

If you use this task to delete temporary files created by editors or other software and it doesn't work, try setting the defaultexcludes attribute to no.


You can see the attributes of this task in Table 4-9.

The includes, includesfile, exclude, and excludesfile attributes are deprecated and are being replaced by fileset. This makes me suspect that other tasks will follow this same pattern.


Table 4-9. The delete task's attributes

Attribute

Description

Required

Default

defaultexcludes

Specifies if you want to use default excludes. Set to yes/no.

No

Default excludes are used.

dir

Specifies the name of a directory to delete. All its files and subdirectories will be deleted.

At least one of file or dir (unless a fileset element is specified).

 

excludes

Deprecated. Use a fileset element. Specifies the patterns matching files to exclude, as a comma- or space-separated list.

No

No files (except default excludes) are excluded.

excludesfile

Deprecated. Use a fileset element. Specifies the name of a file where each line is a pattern matching files to exclude.

No

 

failonerror

Specifies if you want an error to stop the build. Only used if if quiet is false.

No

TRue

file

Specifies the file you want to delete.

At least one of file or dir (unless a fileset element is specified).

 

includeEmptyDirs

Specifies if you want to delete empty directories when using file sets.

No

false

includes

Deprecated. Use a nested fileset element. Specifies the patterns matching files to include, as a comma- or space-separated list.

No

All files are included.

includesfile

Deprecated. Use a nested fileset element. Specifies the name of a file where each line is a pattern matching files to include.

No

 

quiet

Suppresses most diagnostic messages.

No

 

verbose

Specifies that you want to show the name of each deleted file (true/false).

No

false


The delete task can contain nested fileset elements.

Here's something you might not have expected: empty directories are not deleted by default. To remove empty directories, use the includeEmptyDirs attribute.


4.2.2. Creating New Directories

Want to create the directory structure for local or network deployment? Use mkdir. This one's so important that you've seen it in use since Chapter 1. And it's easy to use with only one attribute, as you can see in Table 4-10.

Table 4-10. The mkdir task's attributes

Attribute

Description

Required

dir

Specifies the directory you want to create

Yes


Want to create a directory? Just do it:

<mkdir dir="${dist}"/>

Just realized that you've asked mkdir to create a directory whose parent directories don't exist? That's not a problem since mkdir creates parent directories as needed.




    Ant. The Definitive Guide
    Ant: The Definitive Guide, 2nd Edition
    ISBN: 0596006098
    EAN: 2147483647
    Year: 2003
    Pages: 115
    Authors: Steve Holzner

    flylib.com © 2008-2017.
    If you may any questions please contact us: flylib@qtcs.net