1. Ant是一种基于Java的Build工具.基本特性:
(1)基于Java的实现。具有良好的跨平台性,同时可以通过增加新的Java类来扩展Ant的功能,而无需去了解不同平台上不同的脚本语言。
(2)基于XML的配置文件。Ant以XML树来描述Target/Task的关系,文件结构清晰、易读易写,并且利用XML对格式的控制来避免由于配置文件的错误造成的Build操作失败。
2. 建立工程的目录
常用目录:
(1)bin 公共的二进制文件,以及运行脚本
(2)build 临时创建的文件,如类文件等
(3)dist 目标输出文件,如生成Jar文件等。
(4)doc/javadocs 文档。
(5)lib 需要导出的Java包
(6)src 源文件
(7)web web应用
3. 编写Build文件
Build.xml 由三层标记表示,一层包一层。
第一层project,描述整个项目,也就是ant要做的事情整个过程概括。
第二层target,目标,对象,你可以理解成一个任务单元,或者任务集,因为它就是把一些任务包括到一起。
第三层task,也就是任务了,ant定义了很多任务标记,这个可以在ant的doc里面找到
下面以Tomcat 5.0环境下的一个简单应用为例看一下ant 的使用
建立目录结构:
helloapp
|- src
|- web
|---|- WEB-INF
|---|---|- classes
|---|---|- lib
lib 下放这个应用的所有需要的jar文件
src 下就是我们的原代码了
classes 是代码编译后存放的位置
web 就是我们常用的webapp的目录结构
我们要做的是:
(1)把所需的jar文件考到lib下,在web下编写jsp,html页面,在src下编写java源文件和properties文件,把web.xml,struts-config.xml,tld文件放入WEB-INF
(2)编译src下的java源文件,放入classes
(3)把src下的所有资源文件拷到classes, 把web应用打包成war文件
(4)发布应用,把war文件拷到tomcat的webapps下
具体来看一下怎么做
(1)就不用说了,看(2):
<!-- ================ build.xml ================== -->
<project name="helloapp" default="compile" basedir=".">
<target name="compile">
<javac srcdir="${basedir}/src"
destdir="${basedir}/web/WEB-INF/classes"
debug="on"
>
<!-- 定义了classpath就不用在环境变量中设置一大堆jar了 非常方font>"${basedir}/web/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
</project>
命令行下运行: ant
这里我们只定义了一个target 和一个 task, javac 是最常用的 task 了, 很明了,指定源文件地址,目的地,classpath 就可以编译了
路径经常要用,为了更方便,来加几个property:
<project name="helloapp" default="compile" basedir=".">
<!-- ================= Property Definitions ==================== -->
<property name="src.home" value="${basedir}/src" />
<property name="classes.home" value="${basedir}/web/WEB-INF/classes" />
<property name="lib.home" value="${basedir}/web/WEB-INF/lib" />
<!-- ================= "compile" Target ==================== -->
<target name="compile">
<javac srcdir="${src.home}"
destdir="${classes.home}"
debug="on"
>
<classpath>
<fileset dir="${lib.home}">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
</project>
在看第(3)步
加几个property:
<property name="app.name" value="helloapp" />
<property name="build.home" value="${basedir}/web" />
加个"build" Target
<!-- ================= "build" Target ==================== -->
<target name="build" depends="compile">
<copy todir="${classes.home}">
<fileset dir="${src.home}">
<include name="**/*.properties" />
</fileset>
</copy>
<jar jarfile="${app.name}.war" basedir="${build.home}" />
</target>
然后将<project name="helloapp" default="compile" basedir=".">中default改为default="build"
运行 ant 就可以看到 helloapp.war 了
剩下最后一步:发布它
加property:
<!-- 指向tomcat的webapps目录 -->
<property name="webapps.home" value="C:\Tomcat 5.0\webapps"/>[code]
加个"deploy" Target[code]
<!-- ================= "deploy" Target ==================== -->
<target name="deploy" depends="build">
<copy todir="${webapps.home}">
<fileset dir="${basedir}">
<include name="${app.name}.war" />
</fileset>
</copy>
</target>
然后将<project name="helloapp" default="build" basedir=".">中default改为default="deploy"
运行 ant 就可以在 tomcat的webapps目录下看到 helloapp.war 了,启动tomcat, 运行这个应用
完整的 build.xml :
<project name="helloapp" default="deploy" basedir=".">
<!-- ================= Property Definitions ==================== -->
<property name="src.home" value="${basedir}/src" />
<property name="classes.home" value="${basedir}/web/WEB-INF/classes" />
<property name="lib.home" value="${basedir}/web/WEB-INF/lib" />
<property name="app.name" value="helloapp" />
<property name="build.home" value="${basedir}/web" />
<property name="webapps.home" value="C:\Tomcat 5.0\webapps"/>
<!-- ================= "compile" Target ==================== -->
<target name="compile">
<javac srcdir="${src.home}"
destdir="${classes.home}"
debug="on"
>
<classpath>
<fileset dir="${lib.home}">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
<!-- ================= "build" Target ==================== -->
<target name="build" depends="compile">
<copy todir="${classes.home}">
<fileset dir="${src.home}">
<include name="**/*.properties" />
</fileset>
</copy>
<jar jarfile="${app.name}.war" basedir="${build.home}" />
</target>
<!-- ================= "deploy" Target ==================== -->
<target name="deploy" depends="build">
<copy todir="${webapps.home}">
<fileset dir="${basedir}">
<include name="${app.name}.war" />
</fileset>
</copy>
</target>
</project>
执行ant 如果不带任何参数,ant 会在当前路径下找 build.xml,如找到就运行<project>的default指定的 target
也可以指定build.xml 文件和 target, 如:
ant -buildfile <build-dir>/xxx.xml targetname
(1)基于Java的实现。具有良好的跨平台性,同时可以通过增加新的Java类来扩展Ant的功能,而无需去了解不同平台上不同的脚本语言。
(2)基于XML的配置文件。Ant以XML树来描述Target/Task的关系,文件结构清晰、易读易写,并且利用XML对格式的控制来避免由于配置文件的错误造成的Build操作失败。
2. 建立工程的目录
常用目录:
(1)bin 公共的二进制文件,以及运行脚本
(2)build 临时创建的文件,如类文件等
(3)dist 目标输出文件,如生成Jar文件等。
(4)doc/javadocs 文档。
(5)lib 需要导出的Java包
(6)src 源文件
(7)web web应用
3. 编写Build文件
Build.xml 由三层标记表示,一层包一层。
第一层project,描述整个项目,也就是ant要做的事情整个过程概括。
第二层target,目标,对象,你可以理解成一个任务单元,或者任务集,因为它就是把一些任务包括到一起。
第三层task,也就是任务了,ant定义了很多任务标记,这个可以在ant的doc里面找到
下面以Tomcat 5.0环境下的一个简单应用为例看一下ant 的使用
建立目录结构:
helloapp
|- src
|- web
|---|- WEB-INF
|---|---|- classes
|---|---|- lib
lib 下放这个应用的所有需要的jar文件
src 下就是我们的原代码了
classes 是代码编译后存放的位置
web 就是我们常用的webapp的目录结构
我们要做的是:
(1)把所需的jar文件考到lib下,在web下编写jsp,html页面,在src下编写java源文件和properties文件,把web.xml,struts-config.xml,tld文件放入WEB-INF
(2)编译src下的java源文件,放入classes
(3)把src下的所有资源文件拷到classes, 把web应用打包成war文件
(4)发布应用,把war文件拷到tomcat的webapps下
具体来看一下怎么做
(1)就不用说了,看(2):
<!-- ================ build.xml ================== -->
<project name="helloapp" default="compile" basedir=".">
<target name="compile">
<javac srcdir="${basedir}/src"
destdir="${basedir}/web/WEB-INF/classes"
debug="on"
>
<!-- 定义了classpath就不用在环境变量中设置一大堆jar了 非常方font>"${basedir}/web/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
</project>
命令行下运行: ant
这里我们只定义了一个target 和一个 task, javac 是最常用的 task 了, 很明了,指定源文件地址,目的地,classpath 就可以编译了
路径经常要用,为了更方便,来加几个property:
<project name="helloapp" default="compile" basedir=".">
<!-- ================= Property Definitions ==================== -->
<property name="src.home" value="${basedir}/src" />
<property name="classes.home" value="${basedir}/web/WEB-INF/classes" />
<property name="lib.home" value="${basedir}/web/WEB-INF/lib" />
<!-- ================= "compile" Target ==================== -->
<target name="compile">
<javac srcdir="${src.home}"
destdir="${classes.home}"
debug="on"
>
<classpath>
<fileset dir="${lib.home}">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
</project>
在看第(3)步
加几个property:
<property name="app.name" value="helloapp" />
<property name="build.home" value="${basedir}/web" />
加个"build" Target
<!-- ================= "build" Target ==================== -->
<target name="build" depends="compile">
<copy todir="${classes.home}">
<fileset dir="${src.home}">
<include name="**/*.properties" />
</fileset>
</copy>
<jar jarfile="${app.name}.war" basedir="${build.home}" />
</target>
然后将<project name="helloapp" default="compile" basedir=".">中default改为default="build"
运行 ant 就可以看到 helloapp.war 了
剩下最后一步:发布它
加property:
<!-- 指向tomcat的webapps目录 -->
<property name="webapps.home" value="C:\Tomcat 5.0\webapps"/>[code]
加个"deploy" Target[code]
<!-- ================= "deploy" Target ==================== -->
<target name="deploy" depends="build">
<copy todir="${webapps.home}">
<fileset dir="${basedir}">
<include name="${app.name}.war" />
</fileset>
</copy>
</target>
然后将<project name="helloapp" default="build" basedir=".">中default改为default="deploy"
运行 ant 就可以在 tomcat的webapps目录下看到 helloapp.war 了,启动tomcat, 运行这个应用
完整的 build.xml :
<project name="helloapp" default="deploy" basedir=".">
<!-- ================= Property Definitions ==================== -->
<property name="src.home" value="${basedir}/src" />
<property name="classes.home" value="${basedir}/web/WEB-INF/classes" />
<property name="lib.home" value="${basedir}/web/WEB-INF/lib" />
<property name="app.name" value="helloapp" />
<property name="build.home" value="${basedir}/web" />
<property name="webapps.home" value="C:\Tomcat 5.0\webapps"/>
<!-- ================= "compile" Target ==================== -->
<target name="compile">
<javac srcdir="${src.home}"
destdir="${classes.home}"
debug="on"
>
<classpath>
<fileset dir="${lib.home}">
<include name="*.jar"/>
</fileset>
</classpath>
</javac>
</target>
<!-- ================= "build" Target ==================== -->
<target name="build" depends="compile">
<copy todir="${classes.home}">
<fileset dir="${src.home}">
<include name="**/*.properties" />
</fileset>
</copy>
<jar jarfile="${app.name}.war" basedir="${build.home}" />
</target>
<!-- ================= "deploy" Target ==================== -->
<target name="deploy" depends="build">
<copy todir="${webapps.home}">
<fileset dir="${basedir}">
<include name="${app.name}.war" />
</fileset>
</copy>
</target>
</project>
执行ant 如果不带任何参数,ant 会在当前路径下找 build.xml,如找到就运行<project>的default指定的 target
也可以指定build.xml 文件和 target, 如:
ant -buildfile <build-dir>/xxx.xml targetname
评论