Ant构建项目 - ANT
现在,我们已经了解了Ant数据类型,现在是时候把这些转化为行动。考虑下面的项目结构
项目将形成的Hello World传真应用程序项目在本教程的其余部分。
C:workFaxWebApplication>tree
Folder PATH listing
Volume serial number is 00740061 EC1C:ADB1
C:.
+---db
+---src
.   +---faxapp
.       +---dao
.       +---entity
.       +---util
.       +---web
+---war
    +---images
    +---js
    +---META-INF
    +---styles
    +---WEB-INF
        +---classes
        +---jsp
        +---lib
解释一下项目结构。
- 数据库脚本存储在 db 文件夹。
 - Java源代码存储在src文件夹。
 - 图像,JS,META-INF,样式(CSS)被存储在 war 文件夹。
 - JSP被保存在jsp中文件夹。
 - 第三方jar文件都存储在lib文件夹。
 - Java类文件将被存储在WEB-INF classes文件夹。
 
这个练习的目的是建立一个编译的java类,并将它们放置在WEB-INF classes文件夹Ant文件。
下面是项目所需的build.xml文件。让我们看看它内容:
<?xml version="1.0"?>
<project name="fax" basedir="." default="build">
    <property name="src.dir" value="src"/>
    <property name="web.dir" value="war"/>
    <property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
    <property name="name" value="fax"/>
    <path id="master-classpath">
        <fileset dir="${web.dir}/WEB-INF/lib">
            <include name="*.jar"/>
        </fileset>
        <pathelement path="${build.dir}"/>
    </path>
    <target name="build" description="Compile source tree java files">
        <mkdir dir="${build.dir}"/>
        <javac destdir="${build.dir}" source="1.5" target="1.5">
            <src path="${src.dir}"/>
            <classpath refid="master-classpath"/>
        </javac>
    </target>
    <target name="clean" description="Clean output directories">
        <delete>
            <fileset dir="${build.dir}">
                <include name="**/*.class"/>
            </fileset>
        </delete>
    </target>
</project>
首先,让我们为源,网上声明某些属性,并建立文件夹。
<property name="src.dir" value="src"/>
<property name="web.dir" value="war"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
在这个例子中,对于src.dir是指项目(即,这里的java源文件可以找到)的源文件夹。
web.dir 指的是项目的网页源文件夹。在这里,您可以找到JSP,web.xml,CSS,JavaScript和其他Web相关的文件
最后,build.dir是指在项目编译的输出文件夹。
属性可以参考其他属性。如图所示,在上述例子中,build.dir属性使得参考web.dir属性。
在这个例子中,对于src.dir是指项目的源的文件夹。
我们的项目的默认目标compile目标。但首先,让我们看看clean目标。
clean目标,顾名思义删除build文件夹中的文件。
<target name="clean" description="Clean output directories">
   <delete>
      <fileset dir="${build.dir}">
         <include name="**/*.class"/>
      </fileset>
   </delete>
</target>
在主类路径保存在类路径的信息。在这种情况下,它包含在build文件夹中的类和在lib文件夹中的jar文件。
<path id="master-classpath">
   <fileset dir="${web.dir}/WEB-INF/lib">
      <include name="*.jar"/>
   </fileset>
   <pathelement path="${build.dir}"/>
</path>
最后,构建目标构建文件。首先,我们创建构建目录,如果它不存在。然后我们执行javac命令(指定JDK1.5作为我们的目标编译)。我们提供的源文件夹和类路径javac任务,并要求它砸在build文件夹中的类文件。
<target name="build" description="Compile main source tree java files">
   <mkdir dir="${build.dir}"/>
   <javac destdir="${build.dir}" source="1.5" target="1.5" debug="true"
             deprecation="false" optimize="false" failonerror="true">
      <src path="${src.dir}"/>
      <classpath refid="master-classpath"/>
   </javac>
</target>
在这个文件运行ant将编译java源文件,并将类build文件夹中。
下面的结果是运行Ant文件的结果:
C:>ant
Buildfile: C:uild.xml
BUILD SUCCESSFUL
Total time: 6.3 seconds
该文件被编译并放置在build.dir文件夹中。