现在我们已经了解了Ant中的数据类型,是时候将这些知识付诸实践了。我们将在本章中构建一个项目。本章的目的是构建一个可编译Java类并将其放置在 WEB-INF\classes 文件夹中的Ant文件。

    考虑以下项目结构

    • 数据库脚本存储在db文件夹中。

    • Java源代码存储在src文件夹中。

    • 图像js,META-INF,样式(css)存储在war文件夹中。

    • JSP存储在jsp文件夹中。

    • 第三方jar文件存储在lib文件夹中。

    • Java类文件存储在WEB-INF\classes文件夹中。

    该项目构成了本教程其余部分的Hello World Fax Application。

    1. C:\work\FaxWebApplication>tree
    2. Folder PATH listing
    3. Volume serial number is 00740061 EC1C:ADB1
    4. C:.
    5. +---db
    6. +---src
    7. . +---faxapp
    8. . +---dao
    9. . +---entity
    10. . +---util
    11. . +---web
    12. +---war
    13. +---images
    14. +---js
    15. +---META-INF
    16. +---styles
    17. +---WEB-INF
    18. +---classes
    19. +---jsp
    20. +---lib

    这是该项目所需的build.xml。让我们逐一考虑。

    1. <?xml version = "1.0"?>
    2. <project name = "fax" basedir = "." default = "build">
    3. <property name = "src.dir" value = "src"/>
    4. <property name = "web.dir" value = "war"/>
    5. <property name = "build.dir" value = "${web.dir}/WEB-INF/classes"/>
    6. <property name = "name" value = "fax"/>
    7.  
    8. <path id = "master-classpath">
    9. <fileset dir = "${web.dir}/WEB-INF/lib">
    10. <include name = "*.jar"/>
    11. </fileset>
    12.  
    13. <pathelement path = "${build.dir}"/>
    14. </path>
    15.  
    16. <target name = "build" description = "Compile source tree java files">
    17. <mkdir dir = "${build.dir}"/>
    18.  
    19. <javac destdir = "${build.dir}" source = "1.5" target = "1.5">
    20. <src path = "${src.dir}"/>
    21. <classpath refid = "master-classpath"/>
    22. </javac>
    23. </target>
    24.  
    25. <target name = "clean" description = "Clean output directories">
    26. <delete>
    27. <fileset dir = "${build.dir}">
    28. <include name = "**/*.class"/>
    29. </fileset>
    30. </delete>
    31. </target>
    32. </project>

    首先,让我们为源文件夹,网站文件夹和构建文件夹声明一些属性。

    1. <property name = "src.dir" value = "src"/>
    2. <property name = "web.dir" value = "war"/>
    3. <property name = "build.dir" value = "${web.dir}/WEB-INF/classes"/>

    在这个例子中

    • src.dir是指项目的源文件夹,可以在其中找到java源文件。

    • web.dir是指项目的Web源文件夹,您可以在其中找到JSP,web.xml,css,javascript和其他与Web相关的文件

    • build.dir指项目编译的输出文件夹。

    属性可以引用其他属性。如上例所示,build.dir属性引用了web.dir属性。

    在此示例中,src.dir引用项目的源文件夹。

    我们项目的默认目标是compile目标。但是首先让我们看一下clean目标。

    顾名思义,干净目标将删除构建文件夹中的文件。

    1. <target name = "clean" description = "Clean output directories">
    2. <delete>
    3. <fileset dir = "${build.dir}">
    4. <include name = "**/*.class"/>
    5. </fileset>
    6. </delete>
    7. </target>

    master-classpath包含类路径信息。在这种情况下,它包括build文件夹中的类和lib文件夹中的jar文件。

    1. <path id = "master-classpath">
    2. <fileset dir = "${web.dir}/WEB-INF/lib">
    3. <include name = "*.jar"/>
    4. </fileset>
    5.  
    6. <pathelement path = "${build.dir}"/>
    7. </path>

    最后,构建目标以构建文件。首先,我们创建构建目录(如果不存在)。然后,我们执行javac命令(将jdk1.5指定为我们的目标编译)。我们为javac任务提供源文件夹和类路径,并要求它将类文件拖放到build文件夹中。

    1. <target name = "build" description = "Compile main source tree java files">
    2. <mkdir dir = "${build.dir}"/>
    3.  
    4. <javac destdir = "${build.dir}" source = "1.5" target = "1.5" debug = "true"
    5. deprecation = "false" optimize = "false" failonerror = "true">
    6. <src path = "${src.dir}"/>
    7. <classpath refid = "master-classpath"/>
    8. </javac>
    9. </target>

    在此文件上执行Ant会编译Java源文件,并将这些类放置在build文件夹中。

    以下结果是运行Ant文件的结果

    1. C:\>ant
    2. Buildfile: C:\build.xml

    3. BUILD SUCCESSFUL

    4. Total time: 6.3 seconds

    文件被编译并放置在build.dir文件夹中。